你可以在飞镖中制作扩展方法吗?就像你在 C# 中一样,例如:
void swap(this CssClassSet ccs, String oldClass, String newClass)
{
ccs.remove(oldClass);
ccs.add(newClass);
}
Dart 可以做这种事情吗?我想扩展 CssClassSet 以拥有一个swap(String oldClass, String newClass)
方法。
你可以在飞镖中制作扩展方法吗?就像你在 C# 中一样,例如:
void swap(this CssClassSet ccs, String oldClass, String newClass)
{
ccs.remove(oldClass);
ccs.add(newClass);
}
Dart 可以做这种事情吗?我想扩展 CssClassSet 以拥有一个swap(String oldClass, String newClass)
方法。
6 年后,扩展功能终于出现了: https ://github.com/dart-lang/language/issues/41#issuecomment-539251446
它们将包含在 dart 2.6 中
还没有。请参阅issue 9991 范围的对象扩展。
是的,这是在 Dart 中引入的2.6
。
语法如下:
extension YourExtension on YourClass {
void yourFunction() {
this.anyMember(); // You can access `anyMember` of `YourClass` using `this`.
anyMember(); // You can access `anyMember` of `YourClass` without `this`.
}
}
void main() {
YourClass yourVariable;
yourVariable.yourFunction(); // valid
}
您还可以扩展类型,例如int
:
void main() {
5.fancyPrint();
3.minusThree; // returns 0
}
extension FancyInt on int {
void fancyPrint() => print('The magic number is $this.');
int get minusThree => this - 3;
}
你可以在这里了解更多。