首页 > 解决方案 > Dart 名称冲突解决方案

问题描述

我在 Dart 中有一个文件,如下所示:

library myLibrary;

bool myFunction(String s) => s == null;

extension StringExtensions on String {
  bool get myFunction=> myFunction(this);
}

我基本上想为以前的现有功能添加扩展名,名称相同。

Dart 编译器会抱怨这一点,因为它看不到外部myFunction()名称,只能看到内部的吸气剂StringExtensions

有没有办法让我myFunction从内部引用外部StringExtensions?或者我可以通过使用别名将它们分隔在两个不同的文件/库中来实现这一点吗?

标签: dart

解决方案


您可以创建对该函数的私有引用并在您的扩展中使用它:

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);
}

...

推荐阅读