0Pricing
Kotlin Academy · Lekcja

when jako wyrażenie

Zwracaj wartości z when

when jako wyrażenie to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

when jako wyrażenie

Kotlinowe when to coś więcej niż instrukcja switch. Jest to wyrażenie, czyli konstrukcja tworząca wartość, którą można przypisać lub zwrócić.

Dzięki temu logika rozgałęzień jest zwięzła i czytelna.

Zwracanie wartości

Gdy when jest używane jako wyrażenie, każda gałąź dostarcza wynik. Wartość pasującej gałęzi staje się wynikiem całego wyrażenia when.

fun main() {
    val day = 3
    val name = when (day) {
        1 -> "Monday"
        2 -> "Tuesday"
        3 -> "Wednesday"
        else -> "Other"
    }
    println(name)
}

else jest wymagane

Gdy when jest używane jako wyrażenie, musi być wyczerpujące. W przypadku dowolnych wartości oznacza to konieczność dodania gałęzi else.

Bez niej kompilator nie może zagwarantować utworzenia wartości.

fun grade(score: Int): String = when {
    score >= 90 -> "A"
    score >= 80 -> "B"
    else -> "C"
}

fun main() {
    println(grade(85))
}

Wiele wartości w jednej gałęzi

Wiele wartości można rozdzielić przecinkami, aby przypisać je do jednej gałęzi.

Jest to czytelniejsze niż powtarzanie tego samego ciała.

fun main() {
    val day = 6
    val type = when (day) {
        1, 2, 3, 4, 5 -> "Weekday"
        6, 7 -> "Weekend"
        else -> "Invalid"
    }
    println(type)
}

when bez argumentu

Po pominięciu obiektu sprawdzanego każda gałąź staje się warunkiem logicznym.

Zastępuje to łańcuch if/else if uporządkowanym blokiem.

fun main() {
    val temp = 18
    val feel = when {
        temp < 0 -> "Freezing"
        temp < 15 -> "Cold"
        temp < 25 -> "Mild"
        else -> "Hot"
    }
    println(feel)
}

Zakresy w gałęziach

Gałęzie mogą sprawdzać zakresy za pomocą in.

W ten sposób bardzo naturalnie wyraża się kategorie liczbowe.

fun main() {
    val score = 73
    val band = when (score) {
        in 0..59 -> "Fail"
        in 60..79 -> "Pass"
        in 80..100 -> "Excellent"
        else -> "Invalid"
    }
    println(band)
}

Sprawdzanie typów w gałęziach

Gałęzie mogą sprawdzać typy za pomocą is.

Wynik każdej gałęzi może być inny, a when zwraca wspólny typ.

fun describe(x: Any): String = when (x) {
    is Int -> "Integer"
    is String -> "Text"
    else -> "Unknown"
}

fun main() {
    println(describe(42))
    println(describe("hi"))
}

Bloki gałęzi

Gałąź może być blokiem zawierającym wiele instrukcji. Ostatnie wyrażenie w bloku stanowi jego wartość.

fun main() {
    val n = 5
    val result = when {
        n > 0 -> {
            val doubled = n * 2
            "Positive, doubled is " + doubled
        }
        else -> "Non-positive"
    }
    println(result)
}

Bezpośrednie zwracanie when

Funkcja może bezpośrednio zwracać wyrażenie when za pomocą ciała będącego pojedynczym wyrażeniem.

Jest to bardzo częsty i przejrzysty styl kodu Kotlin.

fun sign(n: Int): String = when {
    n > 0 -> "positive"
    n < 0 -> "negative"
    else -> "zero"
}

fun main() {
    println(sign(-4))
}

Przechwytywanie wartości sprawdzanej

Wartość sprawdzaną można zadeklarować wewnątrz when, aby była dostępna w gałęziach.

Dzięki temu tymczasowa wartość ma ściśle ograniczony zakres.

fun describeLength(text: String): String = when (val len = text.length) {
    0 -> "empty"
    in 1..5 -> "short (" + len + ")"
    else -> "long (" + len + ")"
}

fun main() {
    println(describeLength("hello"))
}

Połączenie wszystkiego

Jako wyrażenie when jest wydajnym mechanizmem tworzenia wartości:

  • Każda gałąź dostarcza wynik
  • else zapewnia wyczerpujący charakter wyrażenia
  • Obsługuje przecinki, zakresy, typy i bloki
fun ticketPrice(age: Int): Int = when {
    age < 6 -> 0
    age < 18 -> 10
    age >= 65 -> 8
    else -> 15
}

fun main() {
    println(ticketPrice(4))
    println(ticketPrice(70))
}

Szybki test

Sprawdź swoje rozumienie when jako wyrażenia.

Podsumowanie

Dowiedziałeś się, jak używać when jako wyrażenia:

  • Zwraca wartość pasującej gałęzi
  • Wymaga else, aby pozostać wyczerpujące
  • Obsługuje przecinki, zakresy, sprawdzanie typów i bloki

Następnie zobaczysz, jak smart casty pozwalają kompilatorowi automatycznie zawężać typy.

Często zadawane pytania

Czy lekcja „when jako wyrażenie” jest bezpłatna?

Tak — pełny tekst „when jako wyrażenie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „when jako wyrażenie”?

Zwracaj wartości z when Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?

Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „when jako wyrażenie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?

Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. when jako wyrażenie
  2. Smart casty
  3. Operatory is i as
  4. Kompletny when
← Powrót do Kotlin Academy