Непоследовательные сообщения об ошибках от редактора дротиков в отношении последних полей - PullRequest
1 голос
/ 18 марта 2012

Учитывая следующий класс, 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 для обеих строк.Кажется, что ситуация с методами такая же, как и с конструктором;это особенно наводит меня на мысль, что в обоих случаях это было запрещено.

Руководство по стилю дартс предлагает использовать открытые конечные поля вместо закрытых полей с открытыми получателями.Мне это нравится в теории, но нетривиальная конструкция элемента не может в действительности войти в список инициализаторов.

Я пропускаю действительную причину, по которой первая будет отображаться как ошибка, а вторая нет?Или я должен сообщить об ошибке прямо сейчас?

1 Ответ

1 голос
/ 18 марта 2012

Это, безусловно, ошибка в генераторе JavaScript, если вы запускаете в Dart VM следующее:

main() {
  new Example();
}

class Example {
  final int foo;

  Example() : foo = 0 {
    foo = 1;      // this fails in the dart vm
    this.foo = 2; // this also fails in the dart vm
  }
}

, тогда он отказывается выполнять обе строки foo = 1 и this.foo = 2 . Это согласуется со спецификацией, которая требует (если я правильно прочитал), чтобы конечные поля были окончательными в теле конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...