我想在我的班级中有一个
print
方法,我也希望能够在其中使用 print
示例:
class A {
String val;
void print() {
print(val);
}
}
使用
print
会引用类A
的方法,如何指定我要调用的方法的完整路径?
解决名称冲突的几种不同方法:
正如 Christopher Moore 提到的,您可以使用
a 前缀显式导入
dart:core
。请注意,如果您不想在 dart:core
中添加 everything前缀,则可以将其导入两次,一次导入全局命名空间,另一次导入带前缀的命名空间:
import 'dart:core';
import 'dart:core' as core;
然后您就可以在
core.print
方法中显式使用 print
并在其他地方正常使用 print
。
请注意,如果您有一个方法尝试在同一个 Dart 库中调用具有相同名称的全局函数,您可以将代码拆分为多个文件,或者您的库可以使用前缀导入自身:
foo.dart
:
import 'foo.dart' as foo;
class SomeClass {
void f() => foo.f();
}
void f() {
// Do stuff.
}
您也可以使用不同的名称显式创建对正常
print
函数的另一个引用:
final _print = print;
class A {
String val;
void print() {
_print(val);
}
}
我假设您正在尝试调用
print
的 dart:core
函数。
您可以显式导入
dart:core
并使用 as
关键字为其指定前缀:
import 'dart:core' as core;
class A {
core.String val;
void print() {
core.print(val);
}
}
最大的问题可能是现在您必须在 dart:core
中添加前缀
everything,就像示例中的
String
一样。
import "dart:core";
import "dart:core" as core show print;
class Class {
static print(_string) {
if (kDebugMode) {
core.print(_string);
}
}
}