关键字/保留字extension
通过使用标准框架中的现有类而不对它们进行子类化,使代码更加简洁。
Dart中是否有关键字允许相同的行为?
extension Double {
var mm: Double { return self / 1_000.0 }
}
let oneInch = 25.4.mm
print("One inch is \(oneInch) meters")
答案 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 methods和extension types存在一些问题。
当然,您总是可以使用新的class
,而现有的extend
类在它们之上引入了新的功能。
但是,这仅适用于非原始类,因此让我们希望最好。
您最好的选择可能是解决上面链接的问题。
答案 2 :(得分:0)