Sobes.tech
Junior

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

sobes.tech AI

Отговор от AI

when в Kotlin е универсален структурен оператор, който замества класическия switch в други езици. Може да се използва като израз (връщайки стойност) или като оператор.

Основни възможности:

  • Сравнение на стойности: Съпоставяне с конкретни стойности.

    fun describe(obj: Any): String =
        when (obj) {
            1           -> "Едно"
            "Hello"     -> "Поздрав"
            is Long     -> "Дълго"
            !is String  -> "Не е низ"
            else        -> "Непознато"
        }
    
  • Проверка на тип (is/!is): Съпоставяне с типове данни.

  • Проверка за принадлежност (in/!in): Проверка дали стойността принадлежи към диапазон или колекция.

    fun checkRange(x: Int): String =
        when (x) {
            in 1..10   -> "Положително число в диапазона"
            !in 10..20 -> "Не в втория диапазон"
            else       -> "Нито едно от горните"
        }
    
  • Без аргумент: Използва се като по-гъвкава замяна на веригата if-else if-else. Условията се оценяват последователно.

    fun checkBoolean(x: Boolean, y: Boolean): String =
        when {
            x && y -> "И двете са истина"
            !x && !y -> "И двете са лъжа"
            else -> "Микс"
        }
    
  • Връщане на стойност: Ако when се използва като израз, той трябва да е изчерпателен (да покрива всички възможни случаи или да има клон else).

when подобрява четливостта и безопасността на кода в сравнение с традиционния switch.