我正在尝试在我的一个类上创建一个静态 扩展方法(它是自动生成的,所以我无法轻松修改它)。根据文档,这应该是可能的:
扩展还可以具有静态字段和静态辅助方法。
然而,即使这个小例子也无法编译:
extension Foo on String {
static String foo() => 'foo!';
}
void main() {
print(String.foo());
}
Run Code Online (Sandbox Code Playgroud)
Error: Method not found: 'String.foo'.
print(String.foo());
^^^
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
文档意味着扩展类本身可以具有static字段和辅助方法。这些不会是扩展类的扩展。也就是说,在您的示例中,Foo.foo()合法但String.foo()不合法。
您当前无法创建static. 请参阅https://github.com/dart-lang/language/issues/723。
请注意,您还可能会看到 Dart 扩展方法被称为“静态扩展方法”,但“静态”意味着扩展是静态应用的(即,基于编译时已知的对象类型,而不是其运行时类型)。
| 归档时间: |
|
| 查看次数: |
2491 次 |
| 最近记录: |