如何在Dart中创建一个静态扩展方法?

问题描述 投票:0回答:1

我想在Dart中创建一个 静态 扩展方法 (它是自动生成的,所以我不能轻易修改它)。根据文档,这应该是可能的。

扩展也可以有静态字段和静态辅助方法。

然而,即使是这个小例子也不能编译。

extension Foo on String {
  static String foo() => 'foo!';
}

void main() {
  print(String.foo());
}
Error: Method not found: 'String.foo'.
  print(String.foo());
               ^^^

我到底做错了什么?

dart
1个回答
1
投票

文档的意思是,扩展类 自己 可以有 static 字段和助记方法。 这些不会是扩展类的扩展。 也就是说,在你的例子中。Foo.foo() 是合法的,但 String.foo() 不是。

你目前不能创建属于 static. 见 https:/github.comdart-langlanguageissues723。.

注意,你也可能会看到Dart扩展方法被称为 "静态扩展方法",但那里的 "静态 "意味着扩展是静态应用的(即基于编译时已知的对象类型,而不是运行时的类型)。


0
投票

正如James所提到的,从目前来看,你不能直接在扩展类上使用静态方法,目前解决你的问题的方法是。

extension Foo on String {
  String foo() => 'foo!';
}

void main() {
  print('Hi'.foo());
}
© www.soinside.com 2019 - 2024. All rights reserved.