Почему только статические поля могут быть объявлены как "const"?

Я только что обновил свой редактор дротиков (0.5.16_r23799), и код, который был без ошибок/предупреждений, больше не существует.

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

строки, начинающиеся с const есть маркер и это сообщение :

только статические поля могут быть объявлены как 'const'

Я прочитал это ch02-final-const, ничего нет.

этот пост dart-const-static-fields говорит, что const modifier implies static, если мы не можем использовать const без static, мы должны использовать ?... но какой документ / пост я пропустил ? Намерены сделать это :

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

1 ответов


это недавнее изменение, связанное с Примечания от 4 июня Dart Language Design Meeting :

переменные экземпляра const

Гилад считает, что они должны работать, как статика, за исключением области. По-видимому, однако, это усложняет реализацию VM метаданных экземпляра. Три решения:

  1. нет полей экземпляра const.
  2. метаданные статически области.
  3. попробуйте сделать это правильно.

Ларсу нравится 1. Я говорю, что 1 упрощает вещи для пользователей. Прямо сейчас люди путаются со статическим окончательным const и т. д. Гилад ОК с 1.

Я спросил, Будет ли синтаксис " static const "или просто"const"? Пользователи путаются, когда им приходится делать "статические" константы.

Ларс говорит, что они смущены, потому что не понимают систему. Требование "статического" поможет им понять, что происходит на.