相当于Swift“扩展”的飞镖是什么?

时间:2019-02-24 07:44:28

标签: android ios swift dart flutter

关键字/保留字extension通过使用标准框架中的现有类而不对它们进行子类化,使代码更加简洁。 Dart中是否有关键字允许相同的行为?

extension Double {
    var mm: Double { return self / 1_000.0 }
}

let oneInch = 25.4.mm
print("One inch is \(oneInch) meters")

3 个答案:

答案 0 :(得分:1)

他们终于来了?

从dart 2.6版开始(不确定100%)。

class Foo {
  printFoo()  {
    print("Foo");
  }
}

extension Bar on Foo { 
  printBar()  {
    print("Bar");
  }
}

void main() {
  final foo = Foo();
  foo.printFoo();
  foo.printBar();
}

打印:

  

Foo

     

酒吧

您可以在dart pad.

中尝试一下

答案 1 :(得分:0)

TL; DR:很遗憾,Dart不支持扩展方法。

在Dart存储库中,有一个issue about how to add new functionality to existing types。 更具体地说,extension methodsextension types存在一些问题。

当然,您总是可以使用新的class,而现有的extend类在它们之上引入了新的功能。 但是,这仅适用于非原始类,因此让我们希望最好。 您最好的选择可能是解决上面链接的问题。

答案 2 :(得分:0)