Учитывая следующий класс, Dart Editor (сборка 5549) дает мне несколько противоречивых отзывов (согласно комментариям в теле конструктора):
class Example {
final int foo;
Example() :
foo = 0
{
foo = 1; // 'cannot assign value to final variable "foo"'
this.foo = 2; // ok
}
}
Еще более странно, что он с радостью сгенерирует эквивалент (работает)JavaScript для обеих строк.Кажется, что ситуация с методами такая же, как и с конструктором;это особенно наводит меня на мысль, что в обоих случаях это было запрещено.
Руководство по стилю дартс предлагает использовать открытые конечные поля вместо закрытых полей с открытыми получателями.Мне это нравится в теории, но нетривиальная конструкция элемента не может в действительности войти в список инициализаторов.
Я пропускаю действительную причину, по которой первая будет отображаться как ошибка, а вторая нет?Или я должен сообщить об ошибке прямо сейчас?