我在Dart中有一个看起来像这样的文件:
library myLibrary;
bool myFunction(String s) => s == null;
extension StringExtensions on String {
bool get myFunction=> myFunction(this);
}
我基本上想在其中扩展具有相同名称的现有功能。
Dart编译器对此有所抱怨,因为它无法看到外部myFunction()
的名称,而只能看到StringExtensions
内部的吸气剂。
我是否可以从myFunction
内部引用外部StringExtensions
?还是我可以通过使用别名将它们分成两个不同的文件/库来实现此目的?
答案 0 :(得分:3)
您可以创建对该函数的私有引用,并在扩展中使用它:
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);
}
...
答案 1 :(得分:0)
我们可以使用别名导入文件本身:
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);
}
如here所示。