通常,当我创建一个自定义类时,我可以创建一个使用该类作为参数的函数,例如:
class Sphere{
double calculateRadius() {return 40.0;}
}
这样我就可以调用Sphere.calculateRadius()。
但是对于诸如String之类的预先存在的类,这是无法完成的。例如。我尝试做类似的事情:
String.createFrom(String s){return "new";}
,但是它不起作用(Android Studio甚至无法使我编译。)。
这有可能吗,如果可以的话,我该如何在Dart中做到这一点?如果创建了该对象,该如何访问从其调用该方法的对象? (示例中的字符串)
再次为您的无知而打扰,我将在找到正确的温度后尝试解决该问题。
答案 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团队已经尝试设计这种功能,并且很有可能将其添加到语言中。