什么是 Swift “扩展”的 dart 等价物?
Posted
技术标签:
【中文标题】什么是 Swift “扩展”的 dart 等价物?【英文标题】:What is the dart equivalent to Swift “extensions”? 【发布时间】:2019-07-17 21:22:06 【问题描述】:关键字/保留字extension
通过使用标准框架中的现有类而不对它们进行子类化,从而使代码更加简洁。
Dart 中是否有允许相同行为的关键字?
extension Double
var mm: Double return self / 1_000.0
let oneInch = 25.4.mm
print("One inch is \(oneInch) meters")
【问题讨论】:
它似乎还没有实现:github.com/dart-lang/language/issues/40github.com/dart-lang/language/issues/42。扩展类型呢? 我发现 swift 中的extension
可以让代码更清晰,这是类型扩展不提供的。很高兴知道改进存在一个未解决的问题。谢谢。
【参考方案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();
打印:
富
酒吧
你可以在dart pad.试试看
【讨论】:
【参考方案2】:扩展方法目前正在语言中实现。
https://github.com/dart-lang/language/projects/1#card-18758939
规格文件
https://github.com/dart-lang/language/blob/master/accepted/future-releases/static-extension-methods/feature-specification.md
【讨论】:
【参考方案3】:TL;DR:遗憾的是,Dart 不支持扩展方法。
在 Dart 存储库中,为此有一个 issue about how to add new functionality to existing types。 更具体地说,extension methods 和 extension types 存在问题。
当然,您始终可以使用新的class
es,extend
现有类在它们之上引入了新功能。
然而,这只适用于非原始类,所以让我们希望最好。
您最好的选择可能是对上面链接的问题进行投票。
【讨论】:
以上是关于什么是 Swift “扩展”的 dart 等价物?的主要内容,如果未能解决你的问题,请参考以下文章
Java 中 Dart 的 StreamController 等价物是啥?
Dart/Flutter 中的 TimingLogger 等价物是啥?
Swift 中的 @autoreleasepool 等价物是啥?