Статические поля дротика

Я читал этот ответ на SO, и мне было интересно, почему поля явно объявляются как static и const. Константные поля компилируют постоянные времени в Dart? и если это так, не означает ли это, что они неявно статичны?

1 ответ

Решение

Вы можете, теоретически, изменить Дарт так, чтобы const модификатор подразумевает static, Это действительное предложение и активно обсуждалось.

Есть две причины, почему мы предпочитаем требовать явного static:

  • Это делает более понятным, как эти переменные могут быть доступны (как и любой другой статический).
  • Мы могли бы хотеть использовать экземпляр const для другого значения. В данный момент, const Поля экземпляра строго эквивалентны final поля. Тем не менее, они не должны быть. Вы можете, например, изменить спецификацию Dart, чтобы разрешить доступ к const Поля экземпляра как часть константного выражения. (В настоящее время не разрешен доступ к полям в правой части const поля).

Постоянная в классе:

class Consts {
    static const int maxLength = 50;
}

Использование:

...
int length = Consts.maxLength;
...
Другие вопросы по тегам