Статические поля дротика
Я читал этот ответ на 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;
...