Sobes.tech
Junior

Vysvětlete koncept výrazu 'when' v programovacím jazyce Kotlin.

sobes.tech AI

Odpověď od AI

when v Kotlinu je univerzální strukturový operátor, který nahrazuje klasický switch v jiných jazycích. Může být použit jako výraz (vracející hodnotu) nebo jako operátor.

Hlavní funkce:

  • Porovnání hodnot: Shoda s konkrétními hodnotami.

    fun describe(obj: Any): String =
        when (obj) {
            1           -> "Jedna"
            "Hello"     -> "Pozdrav"
            is Long     -> "Dlouhý"
            !is String  -> "Není řetězec"
            else        -> "Neznámý"
        }
    
  • Kontrola typu (is/!is): Shoda s datovými typy.

  • Kontrola zahrnutí (in/!in): Kontrola, zda hodnota patří do rozsahu nebo kolekce.

    fun checkRange(x: Int): String =
        when (x) {
            in 1..10   -> "Kladné číslo v rozsahu"
            !in 10..20 -> "Není v druhém rozsahu"
            else       -> "Žádný z výše uvedených"
        }
    
  • Bez argumentu: Používá se jako flexibilnější náhrada řetězce if-else if-else. Podmínky jsou vyhodnocovány postupně.

    fun checkBoolean(x: Boolean, y: Boolean): String =
        when {
            x && y -> "Obě pravdivé"
            !x && !y -> "Obě nepravdivé"
            else -> "Smíšené"
        }
    
  • Návrat hodnoty: Pokud je when používáno jako výraz, musí být úplné (pokrytí všech možných případů nebo mít větev else).

when zlepšuje čitelnost a bezpečnost kódu ve srovnání s tradičním switch.