在Dart中创建静态扩展方法
通常,当我创建自定义类时,我可以创建一个将该类用作参数的函数,例如:在Dart中创建静态扩展方法,dart,flutter,Dart,Flutter,通常,当我创建自定义类时,我可以创建一个将该类用作参数的函数,例如: class Sphere{ double calculateRadius() {return 40.0;} } 然后我可以调用Sphere.calculateRadius() 但是对于预先存在的类,比如字符串1,这是无法实现的。例如我试过这样做: String.createFrom(String s){return "new";} 但它不起作用(Android Studio甚至不让我编译) 这可
class Sphere{
double calculateRadius() {return 40.0;}
}
然后我可以调用Sphere.calculateRadius()
但是对于预先存在的类,比如字符串1,这是无法实现的。例如我试过这样做:
String.createFrom(String s){return "new";}
但它不起作用(Android Studio甚至不让我编译)
这可能吗?如果可能,我怎样才能在Dart中做到?如果我创建了它,我将如何访问调用该方法的对象?(示例中的字符串)您可能指的是扩展方法。这还不受支持,但Dart团队已经尝试设计这样的功能,很有可能它会被添加到语言中
从现在到2020年1月,Dart 2.7正式引入了扩展方法。 要扩展类,可以执行以下操作:
extension NewExtension on double {
int get myMethod {
return (1/this*10).toInt();
}
}
使用扩展方法 使用以下语法创建扩展:
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);
}
用法:
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);
}
输出:你好:Kab
您可以在这里了解更多信息:这就是我的意思!我不可能自己解决的谢谢你!我要编辑这个问题!是的,我可以看到这个问题在不被支持的时候已经过时了,但现在它正在支持它。你解释得很好。