为什么只能将静态字段声明为'const'?

时间:2013-06-12 20:38:23

标签: dart dart-editor

我刚刚升级了我的Dart编辑器(0.5.16_r23799),并且已经没有bug /警告的代码了。

class Fubar {
  const BAR = 1000000;  
  Fubar(){   
  }
}

const开头的行包含标记和此消息:

  

只有静态字段可以声明为'const'

我读了ch02-final-const,没有。

这篇帖子dart-const-static-fields说明const modifier implies static,如果我们在const之后无法使用static,我们应该使用final代替吗?...但是我错过了什么文件/帖子?打算这样做:

Fubar f = new Fubar();
some = f.BAR;

1 个答案:

答案 0 :(得分:5)

这是Notes From the June 4 Dart Language Design Meeting 中最近的相关更改:

  

const实例变量

     

吉拉德认为,除了范围界定外,他们应该像静态一样工作。但显然,它使实例元数据的VM实现变得复杂。三种解决方案:

     
      
  1. 没有const实例字段。
  2.   
  3. 元数据是静态范围的。
  4.   
  5. 尝试正确执行。
  6.         

    Lars喜欢1.我说1为用户简化了一些事情。现在,人们对静态最终const等感到困惑.Gilad可以使用1。

         

    我问语法是“static const”还是“const”?当用常量做“静态”时,用户会感到困惑。

         Lars说他们很困惑,因为他们不了解系统。要求“静态”将帮助他们了解正在发生的事情。