Dart扩展方法

dart 可以向任意类型添加扩展方法,语法如下:

1
2
3
extension <extension name> on <type> {
// 这里定义扩展方法
}

举例:

1
2
3
4
5
extension NumberParsing on String {
double parseDouble() {
return double.parse(this);
}
}

使用:

1
2
3
4
5
6
void main() {
//使用String类的方法
print('3.14'.split("."));
//使用扩展方法
print('3.14'.parseDouble());
}

有一点值得注意的是不能使用 dynamic 类型的变量调用扩展方法,但类型推断是可以的:

1
2
3
4
var v = '3.14'; // 变量 v 推断为 String 类型
print(v.parseDouble()); // 输出 : 3.14
dynamic d = '3.14';
print(d.parseDouble()); // 运行时异常 : NoSuchMethodError