Выбор ответа Middle Основы языка спрашивают часто обновлено
Когда when обязан иметь else
Вопрос
Когда when, использованный как выражение, может обойтись без else?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Когда проверяется enum, sealed-тип или Boolean и всё перечислено. Компилятор проверяет полноту для типов с известным конечным набором значений: enum, sealed-иерархии и Boolean.
Варианты ответа
- Никогда,
elseобязателен всегда - Когда аргумент
Int, а ветки покрывают весь диапазон значенийInt - Когда проверяется
enum,sealed-тип илиBooleanи всё перечисленоправильный ответ - Только когда
whenвызывается без аргумента
Разбор
Компилятор проверяет полноту для типов с известным конечным набором значений: enum, sealed-иерархии и Boolean. Если все варианты перечислены, else не нужен, а при добавлении нового варианта код перестанет компилироваться, это главный плюс. Для Int полноту компилятор не доказывает даже по диапазонам. when без аргумента как выражение требует else.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.