3

import是一个关键字,但以下工作正常:

import 'dart:io';

void main() {
  import() {
    print("Imported");
  }
  import();
}
  • 这应该工作吗?
  • 语言是否足够稳定,可以继续使用它?
  • import与 say class有什么特别之处,哪个不起作用,其他关键字/可能是公平的游戏?
4

1 回答 1

4

是的,这应该有效。而且我认为是的,您可以合理地确定这将继续有效。为了解释,让我们看一下语言规范。

第 16.1.1 节(保留字)解释了保留字不能用作标识符;如果在需要标识符的地方使用了保留字,则会出现编译时错误。以下是保留字列表:assert, break, case, catch, class, const, continue, default, do, else, enum, extends, false, final, finally, for, if, in, is, , new, null, rethrow, return, super, switch, this, throw, true, try, var, void, . 注意这里没有提到。whilewithimport

然后,第 12.30 节(标识符参考)解释说有一组内置标识符,如下所示:abstract, as, dynamic, export, external, factory, get, implements, import, library, operator, part, set, static, typedef。如果使用内置标识符作为类、类型参数或类型别名的声明名称,则会出现编译时错误。请注意,它import属于这一组——因此您不能将其用作类型,但您可以在其他地方使用它(例如在您的情况下,用作函数名称)。

12.30 节的非规范部分解释了差异:内置标识符是在 Dart 中用作关键字的标识符,但在 Javascript 中不是保留字

请注意,在这个答案中,我引用了 Dart 语言规范 0.30 版的 PDF 形式。

于 2013-04-03T19:50:16.853 回答