关键字作为函数名称的安全性

时间:2013-04-03 19:08:46

标签: dart

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

import 'dart:io';

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

1 个答案:

答案 0 :(得分:3)

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

第16.1.1节(保留字)解释保留字不能用作标识符;如果在预期标识符的位置使用保留字,则为编译时错误。以下是保留字列表:assertbreakcase,{ {1}},catchclassconstcontinuedefaultdoelseenumextendsfalsefinalfinallyforif,{{ 1}},inisnewnullrethrowreturnsuper,{{1} },switchthisthrowtruetryvar。请注意,此处未提及void

然后,第12.30节(标识符参考)解释了有一组内置标识符,如下所示:whilewith,{{1} },importabstractasdynamicexportexternalfactorygetimplementsimportlibraryoperator。如果是内置标识符,则是编译时错误 用作类的声明名称,类型参数或类型别名。请注意part属于此组 - 因此您不能将其用作类型,但您可以在其他地方使用它(就像你的情况一样,作为一个函数名称)。

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

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