6

你可以在飞镖中制作扩展方法吗?就像你在 C# 中一样,例如:

void swap(this CssClassSet ccs, String oldClass, String newClass)
{
    ccs.remove(oldClass);
    ccs.add(newClass);
}

Dart 可以做这种事情吗?我想扩展 CssClassSet 以拥有一个swap(String oldClass, String newClass)方法。

4

3 回答 3

7

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

它们将包含在 dart 2.6 中

于 2019-10-09T20:42:25.420 回答
3

还没有。请参阅issue 9991 范围的对象扩展

于 2013-07-26T13:42:11.227 回答
3

是的,这是在 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;
}

你可以在这里了解更多

于 2019-12-18T13:50:08.280 回答