Объясните концепцию выражения 'when' в языке программирования Kotlin.

when в Kotlin — это конструкция ветвления, который заменяет классический switch в других языках. Он может использоваться как выражение (возвращая значение) или как оператор.

Короткий ответ

Что ответить на собеседовании

when в Kotlin — это конструкция ветвления, который заменяет классический switch в других языках. Он может использоваться как выражение (возвращая значение) или как оператор.

Подробный разбор

Ответ с пояснениями

when в Kotlin — это конструкция ветвления, который заменяет классический switch в других языках. Он может использоваться как выражение (возвращая значение) или как оператор.

Основные возможности:

  • Сравнение значений: Сопоставление с конкретными значениями.

    fun describe(obj: Any): String =
        when (obj) {
            1           -> "One"
            "Hello"     -> "Greeting"
            is Long     -> "Long"
            !is String  -> "Not a string"
            else        -> "Unknown"
        }
    
  • Проверка на тип (is/!is): Сопоставление с типами данных.

  • Проверка на вхождение (in/!in): Проверка вхождения в диапазон или коллекцию.

    fun checkRange(x: Int): String =
        when (x) {
            in 1..10   -> "Positive number in range"
            !in 10..20 -> "Not in the second range"
            else       -> "None of the above"
        }
    
  • Без аргумента: Используется как более гибкая замена цепочки if-else if-else. Условия проверяются по порядку до первого совпадения. Неявного перехода в следующую ветку, как fall-through в некоторых switch, нет.

    fun checkBoolean(x: Boolean, y: Boolean): String =
        when {
            x && y -> "Both true"
            !x && !y -> "Both false"
            else -> "Mixed"
        }
    
  • Возврат значения: Если when используется как выражение, он должен быть исчерпывающим (покрывать все возможные случаи или иметь ветку else).

when повышает читаемость и безопасность кода по сравнению с традиционным switch.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку