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

问题描述 投票:0回答:3

我想在我的班级中有一个

print
方法,我也希望能够在其中使用
print

示例:

class A {
  String val;
  void print() {
    print(val);
  }
}

使用

print
会引用类
A
的方法,如何指定我要调用的方法的完整路径?

dart
3个回答
6
投票

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

  • 正如 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);
      }
    }
    

1
投票

我假设您正在尝试调用

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
一样。


1
投票
import "dart:core";
import "dart:core" as core show print;

class Class {
  static print(_string) {
    if (kDebugMode) {
      core.print(_string);
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.