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()); // おまえは「やめてそれだけは」という
便利というだけでなく楽しいですね。