Sobes.tech
Junior

Vysvetlite koncept výrazu 'when' v programovacom jazyku Kotlin.

sobes.tech AI

Odpoveď od AI

when v Kotlinu je univerzálny štruktúrny operátor, ktorý nahrádza klasický switch v iných jazykoch. Môže byť použitý ako výraz (vracajúci hodnotu) alebo ako operátor.

Hlavné funkcie:

  • Porovnanie hodnôt: Zladenie s konkrétnymi hodnotami.

    fun describe(obj: Any): String =
        when (obj) {
            1           -> "Jeden"
            "Hello"     -> "Pozdrav"
            is Long     -> "Dlhé"
            !is String  -> "Nie je reťazec"
            else        -> "Neznámy"
        }
    
  • Kontrola typu (is/!is): Zladenie s dátovými typmi.

  • Kontrola príslušnosti (in/!in): Kontrola, či hodnota patrí do rozsahu alebo kolekcie.

    fun checkRange(x: Int): String =
        when (x) {
            in 1..10   -> "Kladné číslo v rozsahu"
            !in 10..20 -> "Nie v druhom rozsahu"
            else       -> "Žiadny z vyššie uvedených"
        }
    
  • Bez argumentu: Používa sa ako flexibilnejšia náhrada za reťazec if-else if-else. Podmienky sa hodnotia postupne.

    fun checkBoolean(x: Boolean, y: Boolean): String =
        when {
            x && y -> "Obidve pravdivé"
            !x && !y -> "Obidve nepravdivé"
            else -> "Zmiešané"
        }
    
  • Vrátenie hodnoty: Ak sa when používa ako výraz, musí byť vyčerpávajúci (pokryť všetky možné prípady alebo mať vetvu else).

when zlepšuje čitateľnosť a bezpečnosť kódu v porovnaní s tradičným switch.