Я рассмотрел некоторые другие подобные вопросы по SO, но они, похоже, не обращаются к следующим конкретно.static const - верхний уровень программы не позволяет статический const - Dart
Я хочу добиться того, чтобы константы времени компиляции не могли быть изменены.
У меня есть программа, которую я немного реорганизовал, чтобы де-загромождать. У программы были некоторые объявления const до «main()». Я переместил их в класс, однако мне потребовалось объявить их как «static const». Я тогда подумал, хорошо, что другие объявления «const» до «main()», вероятно, также должны быть «static const». Однако, когда я попытался это сделать, редактор сообщил, что «объявления верхнего уровня не могут быть объявлены« статическими ». НАПРИМЕР.
static const int I_CORRECT_YN = 12; // prompt nr.
Итак, я немного смущен. Я думал, что «const» является статичным. Почему я должен объявлять «статический» в классе? Почему я не могу объявить «верхний уровень» как «статический»? Кроме того, в чем разница между:
static const int I_CORRECT_YN = 12;
const int I_CORRECT_YN = 12;
static final int I_CORRECT_YN = 12;
final int I_CORRECT_YN = 12; ?
Что является лучшим или единственным способом объявить значение времени компиляции, которые не могут быть изменены?
Я предполагаю, что я рассматриваю буквальное значение, но я полагаю, что существует более сложное значение.
Да, я думаю, это объясняет это, спасибо. Я вернусь к нему позже. –
Также обратите внимание, что конечные переменные инициализируются лениво при первом доступе. –