2013-04-03 53 views
2

进口是keword,但以下工作正常:安全作为函数名

import 'dart:io'; 

void main() { 
    import() { 
    print("Imported"); 
    } 
    import(); 
} 
  • 难道这工作?
  • 语言足够稳定,使用它将继续工作?
  • 关于导入与说有什么特别之处,哪些不起作用,其他关键字/可能是公平游戏?

回答

2

是的,这是应该工作。我认为,是的,你可以合理确信这将继续发挥作用。为了解释,我们来看看语言规范。

第16.1.1节(保留字)说明保留字不能用作标识符;如果在需要标识符的地方使用保留字,则会出现编译时错误。下面是保留字列表:assertbreakcasecatchclassconstcontinuedefaultdoelseenumextendsfalsefinalfinallyforifinisnewnullrethrowreturnsuperswitchthisthrowtruetryvarvoid,while,with。请注意,import这里没有提到。

然后,段12.30(标识参考)解释说,有一组内置标识符看起来像这样:abstractasdynamicexportexternalfactorygetimplementsimportlibraryoperator,part,set,static,typedef。并且如果内置标识符 用作类的声明名称,类型参数或类型别名,则这是编译时错误。请注意,import属于这个组 - 所以你不能将它作为一个类型使用,但你可以在其他地方使用它(比如你的情况,作为函数名)。

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

只需要注意,在这个答案中,我引用了Dart Language Specification version 0.30的PDF表单。

+0

Ladicek您的镖师大师! – 2013-04-04 04:47:39