Назад к вопросам
Junior
201
questionbank

В чем разница между неизменяемостью final и const в Dart?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Основное различие в следующем:

  • final: Переменная, помеченная как final, может быть инициализирована только один раз. Ее значение определяется во время выполнения (runtime) и не может быть изменено после присваивания.
void main() {
  final int myFinalValue = 10; // Инициализируется во время выполнения при создании
  // myFinalValue = 20; // Ошибка: Нельзя присвоить новое значение final переменной
  print(myFinalValue);
}
  • const: Переменная, помеченная как const, является compile-time константой. Ее значение должно быть известно во время компиляции и не может быть изменено в дальнейшем. Объекты, помеченные как const, создаются только один раз и используются совместно (shareable).
void main() {
  const int myConstValue = 5; // Значение известно во время компиляции
  // myConstValue = 15; // Ошибка: Нельзя присвоить новое значение const переменной
  print(myConstValue);

  const List<int> constList = [1, 2, 3]; // const список - неизменяемый
  // constList.add(4); // Ошибка: Нельзя изменить const список
}

Вот краткая сводка различий:

Характеристика final const
Инициализация Во время выполнения Во время компиляции
Изменяемость значения Неизменяемое после присвоения Неизменяемое
Время определения Runtime Compile-time
Создание объектов При каждом выполнении кода Один раз, используются совместно
Применимость Для переменных и членов класса Для переменных и значений