search
LoginSignup
0

More than 1 year has passed since last update.

posted at

DartのExtensionsを使ってみる

DartのExtensionについてこちらの記事が面白かったので紹介します。
Dart 2.7以上で拡張メソッド(Extension)が使えます。

ほぼ元記事のままなのですが、私はジョジョが好きなので、ジョジョっぽい拡張メソッドを作ってみました。

// Stringの拡張メソッド
extension StringExtensions on String {
  // Emailの簡易validation
  bool get isValidEmail {
    final emailRegExp = RegExp(r"^[a-zA-Z0-9.]+@[a-zA-Z0-9]+\.[a-zA-Z]+");
    return emailRegExp.hasMatch(this);
  }

  // スペース区切りの結合
  String concatWithSpace(String other) {
    return '$this $other';
  }

  // スペース区切りの結合、その2
  // operator extension
  String operator &(String other) => '$this $other';
}

// numを継承したclassの拡張メソッド
// 10を加算する
extension NumGenericExtensions<T extends num> on T {
  T addTen() => this + 10;
}

// こんな風に自分の好きな拡張メソッドを作れます!
extension JojoExtensions on String {
  String mikeO() => this + '世界だ';
  String joseph() => 'おまえは「$this」という';
}

main() {
  // 使用例と結果
  print('example@example.com'.isValidEmail); // true
  print('exampleexample.com'.isValidEmail);  // false
  print('one'.concatWithSpace('two'));       // 'one two'
  print('one' & 'two');                      // 'one two'
  print(10.addTen());                        // 20
  print(10.0.addTen());                      // 20
}
  print('わたしの顔にドロをぬった'.mikeO()); // わたしの顔にドロをぬった世界だ
  print('やめてそれだけは'.joseph());     // おまえは「やめてそれだけは」という

便利というだけでなく楽しいですね。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0