15

我决定在 Dart 中实现功能化的 underscore.js 库。

我在“underscore.dart”中编写了函数,其中一些示例函数如下所示:

library underscore;

List _filter (ff, List s) => return s..retainWhere(ff);

List _dropWhile(ff,List s) => s.skipWhile(ff).toList();

在我的主要 Dart 程序中,我添加了 import 语句

import 'underscore.dart';

但是,我在“未使用的导入”那一行遇到了持续错误,因此没有识别出任何功能。

但是,当我将“underscore.dart”重新定义为“mainProg 的一部分”并使“mainProg”本身成为一个库时,它确实起作用了。

进一步测试表明,导致问题的是函数名称上的下划线。

有任何想法吗?

4

1 回答 1

28

前置下划线表示该函数是库私有的。也就是说,您不能在其他库中使用它。请参阅库和可见性

库不仅提供 API,而且是一个隐私单元:以下划线 (_) 开头的标识符仅在库内可见。

于 2013-10-04T11:57:11.390 回答