在Dart中创建静态扩展方法

时间:2019-02-25 21:13:32

标签: dart flutter

通常,当我创建一个自定义类时,我可以创建一个使用该类作为参数的函数,例如:

class Sphere{
    double calculateRadius() {return 40.0;}
}

这样我就可以调用Sphere.calculateRadius()。

但是对于诸如String之类的预先存在的类,这是无法完成的。例如。我尝试做类似的事情:

String.createFrom(String s){return "new";}

,但是它不起作用(Android Studio甚至无法使我编译。)。

这有可能吗,如果可以的话,我该如何在Dart中做到这一点?如果创建了该对象,该如何访问从其调用该方法的对象? (示例中的字符串)

再次为您的无知而打扰,我将在找到正确的温度后尝试解决该问题。

3 个答案:

答案 0 :(得分:3)

截至2020年1月,Dart 2.7正式引入了扩展方法。 要扩展类,可以这样做:

foreach ($Drive in $ProtectedDrivesRaw) {

    $UniqueID = $item.serialNumber + '-' + $Drive + '-' + $Volume.name
    $UniqueIDCleaned = $UniqueID -replace "[:\\./]", ""

    $ResultsArray = @(

        $ResultsArray += $item.clientCompanyName
        $ResultsArray += $Volume.name
        $ResultsArray += $item.serialNumber
        $ResultsArray += $Drive
        $ResultsArray += 1
        $ResultsArray += $UniqueIDCleaned        
    )

    Write-Host  $ResultsArray[0]

}

答案 1 :(得分:2)

使用扩展方法

使用以下语法创建扩展:

extension <extension name> on <type> {
  (<member definition>)*
}

示例:

extension MyString on String {
  String addHello() {
    return 'Hello : $this';
  }
}

用法:

 void main() {
      var name = 'Kab';
      var nameWithHello = name.addHello();
      print(nameWithHello);
    }

输出: Hello : Kab

您可以在此处了解更多信息:Dart Extension In Flutter

答案 2 :(得分:0)

您可能是指扩展方法。目前尚不支持,但Dart团队已经尝试设计这种功能,并且很有可能将其添加到语言中。

https://github.com/dart-lang/language/issues/41