Sobes.tech
Junior

Wyjaśnij koncepcję wyrażenia 'when' w języku programowania Kotlin.

sobes.tech AI

Odpowiedź od AI

when w Kotlinie to uniwersalny operator strukturalny, który zastępuje klasyczny switch w innych językach. Może być używany jako wyrażenie (zwracając wartość) lub jako operator.

Główne możliwości:

  • Porównanie wartości: Dopasowanie do konkretnych wartości.

    fun describe(obj: Any): String =
        when (obj) {
            1           -> "Jeden"
            "Hello"     -> "Powitanie"
            is Long     -> "Długi"
            !is String  -> "Nie jest łańcuchem"
            else        -> "Nieznany"
        }
    
  • Sprawdzanie typu (is/!is): Dopasowanie do typów danych.

  • Sprawdzanie przynależności (in/!in): Sprawdzanie, czy element należy do zakresu lub kolekcji.

    fun checkRange(x: Int): String =
        when (x) {
            in 1..10   -> "Pozytywna liczba w zakresie"
            !in 10..20 -> "Nie w drugim zakresie"
            else       -> "Żaden z powyższych"
        }
    
  • Bez argumentu: Używane jako bardziej elastyczna zamiana łańcuchów if-else if-else. Warunki są oceniane kolejno.

    fun checkBoolean(x: Boolean, y: Boolean): String =
        when {
            x && y -> "Oba prawdziwe"
            !x && !y -> "Oba fałszywe"
            else -> "Mieszane"
        }
    
  • Zwracanie wartości: Jeśli when jest używane jako wyrażenie, musi być wyczerpujące (obejmować wszystkie możliwe przypadki lub mieć gałąź else).

when poprawia czytelność i bezpieczeństwo kodu w porównaniu z tradycyjnym switch.