【问题标题】:Create extension method in Dart在 Dart 中创建扩展方法
【发布时间】:2019-07-19 08:41:29
【问题描述】:

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

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

然后我可以调用 Sphere.calculateRadius()。

但是对于预先存在的类,例如 String 类,这是无法做到的。例如。我试过做类似的事情:

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

但它不起作用(Android Studio 甚至不让我编译。)。

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

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

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

    extension NewExtension on double {
      int get myMethod {
        return (1/this*10).toInt();
      }
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我就是这个意思!我自己无法解决,谢谢!我要编辑问题!
      【解决方案3】:

      使用扩展方法

      使用以下语法创建扩展:

      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

      【讨论】:

      • 是的,我可以看到这个问题在它不受支持时是旧的,但现在它正在支持它。你解释得很好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 2013-12-23
      相关资源
      最近更新 更多