Выбор ответа Junior Null-safety спрашивают часто обновлено

Оператор Elvis ?: в Kotlin

Вопрос

Что вернёт выражение user?.name ?: "Гость", если user равен null?

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

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

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

Коротко

Правильный ответ: "Гость". user?.name при user == null даёт null, не выбрасывая исключения, а Elvis ?: подставляет правую часть, если левая равна null.

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

  1. null
  2. Будет выброшен NullPointerException
  3. "Гость"правильный ответ
  4. Ошибка компиляции: ?: нельзя ставить после ?.

Разбор

user?.name при user == null даёт null, не выбрасывая исключения, а Elvis ?: подставляет правую часть, если левая равна null. Связка ?. и ?: самая частая идиома null-safety. NPE здесь невозможен, а ошибки компиляции нет.

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

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