使用 Dart 2.6,我可以使用这样的扩展方法:
extension on int {
int giveMeFive() {
return 5;
}
}
main(List<String> arguments) async {
int x;
x.giveMeFive();
}
Run Code Online (Sandbox Code Playgroud)
一切正常!:D
但是现在如果我想将我的扩展方法放在另一个文件中,如下所示:
main.dart
import 'package:untitled5/Classes/ExtendInt.dart';
main(List<String> arguments) async {
int x;
x.giveMeFive();
}
Run Code Online (Sandbox Code Playgroud)
扩展程序
extension on int {
int giveMeFive() {return 5;}
}
Run Code Online (Sandbox Code Playgroud)
它因令人沮丧的错误而失败..
bin/main.dart:9:5: Error: The method 'giveMeFive' isn't defined for the class 'int'.
Try correcting the name to the name of an existing method, or defining a method named 'giveMeFive'.
x.giveMeFive();
^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
是不允许这样做还是我做错了什么?谢谢阅读 !:)
Eri*_*nst 14
这是按预期工作的。一个没有名字的扩展被隐含地赋予了一个新名字,但它是私有的。所以如果你想在声明它的库之外使用扩展,你需要给它一个名字。
这对用户也很有帮助,因为他们可能需要使用它的名称来解决冲突,并在有多个扩展程序在给定的接收器类型上提供 giveMeFive 时,从您的扩展程序中明确要求扩展方法 giveMeFive。
所以你需要做类似的事情
extension MyExtension on int {
int giveMeFive() => 5;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3121 次 |
| 最近记录: |