Select Page

Kotlin when

Jaroslav Beňo

22/05/2020

Predstav si, že napíšeš aplikáciu, kde používateľ bude čítať dáta z konzoly, ak niečo zadá, tak sa má niečo vykonať, ak zadá niečo iné, tak sa vykoná niečo iné. Napríklad budeš mať aplikáciu, kde používateľ bude vyberať smer kade má ísť. Ak napíše SEVER, tak na konzolu niečo vypíšeme, ak napíše JUH, tak sa stane niečo iné.

Mohol by som to písať pomocou if else if else a tak ďalej, ale v takomto prípade je lepšie použiť when. Teda when použi všade tam  kde by si písal viacej if else príkazov pod sebou.

Napíšeme príkaz when a zátvorky, do zátvoriek pošleme premennú, ktorá sa bude meniť – niekedy tam príde SEVER, niekedy JUH a podobne. Ďalej dáme kučeravé zátvorky, kde napíšeme, čo sa má diať:

val smer = "SEVER";
when(smer){
    "SEVER" -> println("Idem na sever bude zima.")
    "JUH" -> {
        println("Idem na JUH")
        println("Beriem plavky")
    }
}

Teraz keď spustím program tak v smer je SEVER a vo when sa spustí kód za šípkou vedľa SEVER. Ak by som zmenil smer na JUH, tak sa spustí kód za šípkou vedľa JUH. Ak by sme bol napríklad VYCHOD, tak sa nestane nič, lebo som to nešpecifikoval vo when.

Ak v smer bude niečo iné ako mám možnosti vo when, tak môžem na to reagovať. Teda ak som nič nenašiel vo when, môžem dopísať else.

when(smer){
    "SEVER" -> println("Idem na sever bude zima.")
    "JUH" -> {
        println("Idem na JUH")
        println("Beriem plavky")
    }
    else -> println("Zadal si smer, ktorý nepoznám")
}  

Vo when bloku vieme na ľavú stranu šípky vložiť hocijaký príkaz, ktorý vráti hodnotu. Napríklad 2*5, alebo zavoláme funkciu. Logicky tam ale musí vzniknúť taký typ, ako je typ premennej, nad ktorou sa rozhodujeme – v tomto prípade smer a to je String.

fun main(args: Array<String>) {
    val smer = "SEVER";
    when(smer){
        "SEVER" -> println("Idem na sever bude zima.")
        ""+10*5 -> println("jaro")
        davajString() -> println("vysledok davaj string")
        else -> println("Zadal si smer, ktorý nepoznám")
    }
}

fun davajString(): String {
    return "Jaro"
}  

Môžeme používať aj range, o ktorých sa budeme rozprávať neskôr (v inom článku) a ktoré sa používajú napríklad aj vo for cykle.

Napr. ak je číslo medzi 5 a 10 (5..10), tak vojdem do tej vetvi kde bude in 5..10 – čo ak to chcem preložiť do slovenčiny> ak je číslo v rozmedzí 5 až 10 tak vojdi do tejto vetvi.

val cislo =6
when(cislo){
    1 -> println("je to cislo 1")
    in 5..10 -> println("je to cislo medzi 5 az 10")
}

Najnovšie články

O autorovi: Jaroslav Beňo

Jaro je v skratke kresťan, manžel, otec a programátor. Na tomto webe sa venuje programovaniu. Jeho túžbou je šíriť vedomosti ďalej, aby sme mohli spolu rásť.

Pripravil viacero online video kurzov. Jeho sociálne siete:

Podobné články

Naprogramuj si vlastnú Android aplikáciu v jazyku Kotlin

V tvojej prvej Android aplikácii v Kotlime si spravíme aplikáciu na hod kockou. Stalo sa ti, že si hral človeče a chýbala ti kocka? Teraz ti postačí tvoja android appka. Verím, že telefón budeš mať po ruke skôr ako kocku :). Tlačidlo Layout vieme písať aj ručne....

Kotlin extension functions

Predstav si, že chceš manipulovať so stringom. Máš text, ktorý chceš upraviť, napríklad každé druhé písmeno chceš dať veľkým písmenom. Každé prvé bude malým. Máš takúto metódu v Stringu? Nie. Teda nie je možné zavolať napríklad: "Lorem ipsum dolor sit amet,...

Kotlin funkcie

Ak je funkcia vo vnútri triedy, tak sa označuje ako metóda alebo member funkcia – ale je to v podstate jedno. Začíname so slovom fun. Potom ide názov a nasledujú argumenty. Ak metóda nič nevracia, tak na pozadí vracia typ Unit. Ak metóda vracia nejakú...

Kotlin Data class

Ak potrebuješ uchovávať stav aplikácie. Teda máš premenné a potrebuješ ich nastavovať a získavať ich hodnoty, tak vieš použiť Data class. Máme triedu Auto: class Auto (val nazov: String, val pocetDveri: Int = 4) { } Ako z nej spravím data class?...

Kotlin triedy a konštruktory

Trieda slúži na opis a výrobu objektov. Skúsme porozmýšľať nad reálnym objektom – napríklad auto. Ak chceme opísať auto do programu, tak na opis auta použijeme triedu. Čo má auto? Aké vlastnosti? Má počet dverí, značku, ečv, objem kufra a ďalších xy vecí. Nie...

Kotlin range

Range ako názov hovorí je rozpätie hodnôt. V tomto článku sa pozrieme na to ako Kotlin pracuje s range. Poďme sa pozrieť na príklady. Použitie v podmienke: if (i in 1..4) { // equivalent of 1 <= i && i <= 4 print(i) } Prechádzanie cez hodnoty rangu:...

Kotlin dátové typy

Java a Kotlin sú zameniteľné jazyky. Vieš ich obidva použiť v jednom programe, pretože nakoniec z nich bude .class súbor. Tým pádom typy, ktoré pozná Kotlin, pozná aj Java. Sú rozdiely, ktoré už vieš. Nevieš napísať typ int, ale vieš ho používať...

Kotlin String templates

Pri vypisovaní textu často ku textu pridávame hodnoty z premenných. Spájanie Stringov vieme spraviť pomocou + kde pospájame hodnoty a Stringy: for((i, v) in mena.withIndex()){ print("" + i + " " + v + "\n") } Kotlin ale má krajšiu cestu: for((i, v) in...

Kotlin for cyklus

Cyklus alebo loop znamená, že niečo sa opakuje xy krát. Možno prechádzame čísla od 1 do 100, alebo prechádzame cez elementy v poli alebo liste. V tomto článku sa dozvieš ako použiť for cyklus. Predstav si, že chceš vypísať čísla od 0 do 10. Použijeme for cyklus...

Kotlin polia

Pole je zoskupenie jeden a viac prvkov. Na vytvorenie poľa použijeme funkciu arrayOf. Do pola môžeme dať hodnoty rôzneho typu. val mena = arrayOf("Jaro", "Peter"); val rozne = arrayOf("Jaro", 10, Osoba("Tomas", "145878/8787"), false, "Peter"); Aj miešame typy...

Share This

Páčil sa ti článok? Zváž zdieľanie. Ďakujeme.