如何从同名方法调用函数?

Amm*_*tef 1 dart

我想print在我的班级中有一个方法,我也希望能够print在其中使用

例子:

class A {
  String val;
  void print() {
    print(val);
  }
}
Run Code Online (Sandbox Code Playgroud)

usingprint会引用 class 的方法A,如何指定要调用的方法的完整路径?

jam*_*lin 6

解决名称冲突的几种不同方法:

  • 正如Christopher Moore提到的,您可以dart:core使用前缀显式导入。请注意,如果您不想为from 的所有内容dart:core添加前缀,则可以将其导入两次,一次导入全局命名空间,另一次导入带前缀的命名空间:

    import 'dart:core';
    import 'dart:core' as core;
    
    Run Code Online (Sandbox Code Playgroud)

    然后您就可以core.print在您的print方法中显式使用并print在其他地方正常使用。

    请注意,如果您有一个方法尝试在同一个 Dart 库中调用具有相同名称的全局函数,您可以将代码拆分为多个文件,或者您的库可以使用前缀导入自身:

    foo.dart:

    import 'foo.dart' as foo;
    
    class SomeClass {
       void f() => foo.f();
    }
    
    void f() {
       // Do stuff.
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • print您也可以使用不同的名称显式创建对普通函数的另一个引用:

    final _print = print;
    
    class A {
      String val;
      void print() {
        _print(val);
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)