Podmienka when nahrádza switch case. Avšak vykoná sa len tá vetva, ktorá bude splnená ako prvá. when má ale viacero zápisov.
Tak ako switch v C++ - when tiež môže prijímať parameter, nad ktorým sa vykoná porovnávanie. Ak nie je splnená žiadna podmienka, vykoná sa else vetva:
fun main() {
val hodnotenie = readln().toInt()
when(hodnotenie) {
1 -> println("Dakujeme :)")
2 -> println("Stale dobre")
else -> println("Sklamanie :(")
}
}
Parameter vo when-e nie je nevyhnutnosťou. Ak sa napríklad podmienky týkajú viacerých premenných naraz, when s parametrom je v podstate nepoužiteľný. Pozrime si príklad pre generovanie čísla mesiaca do rodného čísla:
fun main() {
val mesiac = readln().toInt()
val pohlavie = readln()
when {
mesiac < 1 -> println("Mesiac musi byt >= 1")
mesiac > 12 -> println("Mesiac musi byt <= 12")
pohlavie != "muz" && pohlavie != "zena" -> println("nespravne pohlavie")
else -> {
// generujem rodne cislo ...
}
}
}
Vytvor when s parametrom, ktorý podľa čísla 1 až 7 vypíše názov dňa; pri inej hodnote vypíš chybu.
Pomocou when bez parametra klasifikuj teplotu ako mráz, chladno, teplo alebo horúco.
Na základe mesiaca a pohlavia pomocou when bez parametra vypočítaj upravené číslo mesiaca pre rodné číslo.