Выбор ответа Junior Dart: типы и null-safety спрашивают часто обновлено
Dart: чем final отличается от const
Вопрос
Что верно про final и const в Dart?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: final запрещает переприсвоить переменную, а const требует значение, известное при компиляции. final про переменную: присвоить можно один раз, но сам объект может меняться (final list = [1]; list.add(2); работает). const про значение: оно вычисляется при компиляции, неизменяемо целиком и канонизируется.
Варианты ответа
finalиconstсинонимы: оба фиксируют значение,constпросто короче писатьfinalзапрещает переприсвоить переменную, аconstтребует значение, известное при компиляцииправильный ответfinalделает объект глубоко неизменяемым, аconstзапрещает только переприсваиваниеconstможно присвоить результатDateTime.now(), если сделать это ровно один раз
Разбор
final про переменную: присвоить можно один раз, но сам объект может меняться (final list = [1]; list.add(2); работает). const про значение: оно вычисляется при компиляции, неизменяемо целиком и канонизируется. DateTime.now() известен только в рантайме, поэтому для const не подходит, а для final подходит. Утверждение про «глубокую неизменяемость final» переворачивает смысл.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.