Выбор ответа Junior Основы языка обновлено

Чем const val отличается от val

Вопрос

Какое утверждение про const val верно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Значение известно при компиляции: примитив или String, вне функций. const val это константа времени компиляции: компилятор подставляет значение в место использования, поэтому разрешены только примитивы и String, а место объявления ограничено верхним уровнем файла, object и companion object.

Варианты ответа

  1. Это то же самое, что val, просто короче и инлайнится в байткод
  2. Значение известно при компиляции: примитив или String, вне функцийправильный ответ
  3. Его можно объявить внутри функции для локальной константы
  4. Он делает любой объект глубоко неизменяемым, включая коллекции

Разбор

const val это константа времени компиляции: компилятор подставляет значение в место использования, поэтому разрешены только примитивы и String, а место объявления ограничено верхним уровнем файла, object и companion object. Внутри функции const писать нельзя. Обычный val вычисляется в рантайме и может хранить что угодно. Глубокой неизменяемости в Kotlin нет ни у val, ни у const.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме