Выбор ответа Middle Основы языка спрашивают часто обновлено

Когда when обязан иметь else

Вопрос

Когда when, использованный как выражение, может обойтись без else?

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

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

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

Коротко

Правильный ответ: Когда проверяется enum, sealed-тип или Boolean и всё перечислено. Компилятор проверяет полноту для типов с известным конечным набором значений: enum, sealed-иерархии и Boolean.

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

  1. Никогда, else обязателен всегда
  2. Когда аргумент Int, а ветки покрывают весь диапазон значений Int
  3. Когда проверяется enum, sealed-тип или Boolean и всё перечисленоправильный ответ
  4. Только когда when вызывается без аргумента

Разбор

Компилятор проверяет полноту для типов с известным конечным набором значений: enum, sealed-иерархии и Boolean. Если все варианты перечислены, else не нужен, а при добавлении нового варианта код перестанет компилироваться, это главный плюс. Для Int полноту компилятор не доказывает даже по диапазонам. when без аргумента как выражение требует else.

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

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

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