扩展字符串
extension ParseNumbers on String {
int parseInt() {
return int.parse(this);
}
double parseDouble() {
return double.parse(this);
}
}
main() {
int i = '42'.parseInt();
print(i);
}
由于扩展方法是静态解析的,所以不能用dynamic
dynamic d = '2';
d.parseInt();
→ Runtime exception: NoSuchMethodError
var v = '1';
v.parseInt(); // Works!
扩展方法是静态解析的,因此它们与调用静态函数或辅助方法一样快,但具有更友好的调用语法。
扩展可以具有类型变量
extension FancyList<T> on List<T> {
List<T> get evenElements {
return <T>[for (int i = 0; i < this.length; i += 2) this[i]];
}
}