Выбор ответа Junior Делегаты обновлено
lazy и var
Вопрос
Можно ли написать var config by lazy { load() }?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Нет: lazy даёт только getValue, нужен val. Делегат для var должен уметь setValue, а Lazy предоставляет только getValue.
Варианты ответа
- Нет:
lazyдаёт толькоgetValue, нуженvalправильный ответ - Да, повторное присваивание просто заменит значение
- Да, но только внутри
objectилиcompanion - Нет, потому что
lazyработает только с примитивами
Разбор
Делегат для var должен уметь setValue, а Lazy предоставляет только getValue. Поэтому by lazy применим только к val. Для изменяемого свойства с отложенной инициализацией есть lateinit var или Delegates.notNull(). С типами lazy не ограничен.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.