0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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());     // おまえは「やめてそれだけは」という

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

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?