【问题标题】:What is the dart equivalent to Swift “extensions”?什么是 Swift “扩展”的 dart 等价物?
【发布时间】: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")

【问题讨论】:

标签: android ios swift dart flutter


【解决方案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】:
    【解决方案3】:

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

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

    当然,您始终可以使用新的classes,extend 现有类在它们之上引入了新功能。 然而,这只适用于非原始类,所以让我们希望最好。 您最好的选择可能是对上面链接的问题进行投票。

    【讨论】:

      猜你喜欢
      • 2014-10-08
      • 2014-02-26
      • 2018-08-07
      • 2014-08-12
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多