Выбор ответа Junior Основы языка обновлено
Чем const val отличается от val
Вопрос
Какое утверждение про const val верно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Значение известно при компиляции: примитив или String, вне функций. const val это константа времени компиляции: компилятор подставляет значение в место использования, поэтому разрешены только примитивы и String, а место объявления ограничено верхним уровнем файла, object и companion object.
Варианты ответа
- Это то же самое, что
val, просто короче и инлайнится в байткод - Значение известно при компиляции: примитив или
String, вне функцийправильный ответ - Его можно объявить внутри функции для локальной константы
- Он делает любой объект глубоко неизменяемым, включая коллекции
Разбор
const val это константа времени компиляции: компилятор подставляет значение в место использования, поэтому разрешены только примитивы и String, а место объявления ограничено верхним уровнем файла, object и companion object. Внутри функции const писать нельзя. Обычный val вычисляется в рантайме и может хранить что угодно. Глубокой неизменяемости в Kotlin нет ни у val, ни у const.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.