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

Mar*_*ong 4 android ios dart swift flutter

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

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

let oneInch = 25.4.mm
print("One inch is \(oneInch) meters")
Run Code Online (Sandbox Code Playgroud)

Dur*_*rdu 6

他们终于来了

从 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();
}
Run Code Online (Sandbox Code Playgroud)

印刷:

酒吧

你可以试试飞镖垫。


Mar*_*cel 0

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

在 Dart 存储库中,存在一个关于如何向现有类型添加新功能的问题。更具体地说,存在扩展方法扩展类型的问题。

当然,您始终可以使用新的classesextend现有类在其之上引入新功能。然而,这只适用于非原始类,所以让我们期待最好的结果。您最好的办法可能是对上面链接的问题进行投票。