Назад к вопросам
Junior
123
questionbank

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

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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. Условия выполняются последовательно.

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

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