Dart有扩展方法,比如c#吗?

时间:2013-07-26 12:36:55

标签: extension-methods dart

你能用dart制作扩展方法吗?就像你可以在C#例如:

void swap(this CssClassSet ccs, String oldClass, String newClass)
{
    ccs.remove(oldClass);
    ccs.add(newClass);
}
Dart有可能做到这一点吗?我想扩展CssClassSet以使用swap(String oldClass, String newClass)方法。

3 个答案:

答案 0 :(得分:6)

6年后,扩展功能终于浮出水面: https://github.com/dart-lang/language/issues/41#issuecomment-539251446

它们将包含在dart 2.6中

答案 1 :(得分:3)

还没有。请参阅issue 9991 - scoped object extensions

答案 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