我在Dart中有一个文件,如下所示:
library myLibrary;
bool myFunction(String s) => s == null;
extension StringExtensions on String {
bool get myFunction=> myFunction(this);
}
我基本上想用相同的名称为以前的现有函数添加扩展。
Dart编译器抱怨这一点,因为它看不到外部myFunction()
名称,只看到StringExtensions
内部的getter。
有没有办法让我从StringExtensions
内部引用外部myFunction
?或者我可以通过使用别名将它们分隔在两个不同的文件/库中来实现这一点吗?
您可以创建一个对函数的私有引用,并在扩展中使用它:
final _myFunction = myFunction;
extension StringExtensions on String {
bool get myFunction => _myFunction(this);
}
为了避免创建私有引用的开销,您只需为扩展名创建一个新文件,然后使用别名导入myLibrary
import 'package:myLibrary/myLibrary.dart' as myLibray;
extension StringExtensions on String {
bool get myFunction => myLibrary.myFunction(this);
}
...
我们可以使用别名导入文件本身
library myLibrary;
// file: my_library.dart
import "my_library.dart" as prefix;
bool myFunction(String s) => s == null;
extension StringExtensions on String {
bool get myFunction=> prefix.myFunction(this);
}
如图所示。