你能用dart制作扩展方法吗?就像你可以在C#例如:
void swap(this CssClassSet ccs, String oldClass, String newClass)
{
ccs.remove(oldClass);
ccs.add(newClass);
}
Dart有可能做到这一点吗?我想扩展CssClassSet以使用swap(String oldClass, String newClass)
方法。
答案 0 :(得分:6)
6年后,扩展功能终于浮出水面: https://github.com/dart-lang/language/issues/41#issuecomment-539251446
它们将包含在dart 2.6中
答案 1 :(得分:3)
答案 2 :(得分:0)
是的,这是introduced in 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;
}
您可以learn more here。