Select Page

Kotlin funkcie

Jaroslav Beňo

26/05/2020

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ú hodnotu, tak typ návratovej hodnoty zapíšeme za argumenty za dvojbodku. Ak metóda má návratovú hodnotu inú ako Unit, tak v metód musí byť príkaz return.

fun nazovMetody(argument1: Int, argument2: String): String{
    return ""
}

Následne vieme túto metódu zavolať, tak, že dáme názvov metódy, zátvorky a hodnoty pre parametre ak metóda požaduje parametre.

nazovMetody(1, "")

Výsledok metódy vieme zapísať do premennej.

val vysledokVolaniaMetody = nazovMetody(1, "")

Ak funkcia obsahuje len jeden riadok. Napríklad:

fun nazovMetody(argument1: Int, argument2: String): String{
    return "$argument1 a $argument2"
}

Tak vieme zápis zjednodušiť tým, že zmažeme zložené zátvorky, zmažeme return a za návratový typ dáme rovná sa :

fun nazovMetody(argument1: Int, argument2: String): String =
    "$argument1 a $argument2"

Ak je len jeden riadok, tak kompilátor z neho vie určiť návratový typ, teda aj ten môžeme vymazať:

fun nazovMetody(argument1: Int, argument2: String) = "$argument1 a $argument2"

To isté je možné aj pre funkcie, ktoré nič nevracajú:

fun nicNevraciam() = println("funkcia kde nic nevraciam")

Parametrom vieme pripísať default hodnoty. Tým vieme zavolať funkcie aj bez zadanie parametrov, ktoré majú default hodnotu:

fun nazovMetody(argument1: Int, argument2: String = "Jaro")
        = "$argument1 a $argument2"  
nazovMetody(10, "Fero")
nazovMetody(10)

Ak chceš kľudne vieš zmeniť poradie parametrov pri volaní metódy ak zadáš ich názov:

nazovMetody(argument2 = "Evka", argument1 = 15)

Tento štýl sa nazýva named arguments. Teda pomenované argumenty. Ak použijeme tento štýl, tak musíme vždy uviesť všetky argumenty s názvom.

Ak tvoja metóda pracuje s údajmi, ktoré sú toho istého typu a chceš s nimi pracovať podobne v metóde, tak vieš ako argument použiť takzvané vararg. Čo je v podstate skratka pre napísanie zoznamu.

Majme metódu, ktorú chceš použiť na vypísanie mien na konzolu. Najprv chcem vypísať 3 mená, neskôr 5 mien a dané mená chcem vložiť ako parametre funkcie. S použitím varags je to jednoducho takto:

fun printMena(vararg mena: String){
    for(m in mena){
        println(m)
    }
}

Metódu zavoláme nasledovne:

printMena("Jaro", "Fero", "Evka", "Palko");
printMena("Evka", "Palko");
printMena("Palko"); printMena();

Teda vstupom metódy je 0 a viac Stringov.

Ak používame vararg, tak môžeme používať aj iný parameter. Ale pri volaní metódy musíme tento parameter pomenovať:

fun printMena(vararg mena: String, text: String) … printMena("Jaro", "Fero", "Duro", text = "text iny");
printMena("Evka", "Palko", text = "text iny");
printMena(text = "text iny");
printMena(); //chyba neuviedol som text

V prípade ak by vararg bol ako posledný parameter a pred vararg by niečo bolo:

fun printMena(text: String, vararg mena: String){

Tak vieme túto metódu zavolať bez named parametru, ale prvý String sa bude považovať, že je text. Teda v tomto príklade by sa za mena považovali len Fero a Duro a Jaro sa bude považovať za text:

printMena("Jaro", "Fero", "Duro");

Ak by si vytvoril pole pomocou arrayOf, tak ako parameter tejto metódy je tiež vararg.

Ak máme metódu, ktorá očakáva vararg, tak v Jave sme do nej vedeli vložiť array. Tu v kotline to nie je možné. Čo musíme spraviť je rozbaliť array na jednotlivé časti – spravíme to tak, že pred parameter, ktorý obsahuje array dáme hviezdičku *.

fun printMena(vararg mena: String){   ..   val mena = arrayOf("Jaro", "Fero", "Duro")
printMena(mena); //chyba
printMena(*mena); //ok

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

Kotlin podmienky if a if else

V tomto článku sa naučíš, čo je to podmienka a ako ju požiť. Poďme na to a poďme sa naučiť Kotlin podmienky if a if else. Základom každého algoritmu je podmienka. Ak niečo, tak niečo, alebo niečo iné. Napríklad ideš kúpiť vajíčka do obchodu: Je obchod otvorený? Ak...

Kotlin porovnávanie, rozdiel medzi == a ===

V tomto článku sa oboznámiš ako je to v Kotline s porovnávaním. Dozvieš sa aký je rozdiel medzi == a ===. Poďme na to v článku Kotlin porovnávanie, rozdiel medzi == a ===. V Jave ak by som porovnal dve premenné pomocou ==, tak sa porovná ich hodnota. V Kotline je...

Kotlin premenné

V tomto článku sa dozvieš čo sú to premenné a ako fungujú v programovacom jazyku Kotlin. Premenné sú jedným zo základných pilierov pri programovaní. Musíš vedieť, ako sa vytvárajú a na čo slúžia. Poďme na to Kotlin premenné. Premenné slúžia na uchovanie informácii...

Kotlin prvý program

V tomto článku sa dozvieš ako krok za krokom napíšeš svoj prvý program v Kotline. Potrebuješ vývojové prostredie IntelliJ IDEA a ostatné sa dozvieš v článku. Vytvoríme nový Kotlin/JVM project a dáme Next. Pomenujeme projekt a zašpecifikujeme umiestnenie....

Ako skonvertovať Java kód na Kotlin kód

V IntelliJ IDEA máme možnosť skopírovať java kód a po vložení do Kotlin kódu sa nás IDEA spýta, či daný kód chceme preložiť do Kotlin kódu. Toto je rýchli spôsob ako si vyskúšať ako by Java kód vyzeral v Kotline. A ty sa v tomto článku dozvieš ako na...

Kotlin úvod v skratke

V tomto článku sa ti v skratke budem snažiť povedať, čo je to Kotlin. Kotlin je programovací jazyk, ktorý vlastní JetBrains, ktorý vytvorili napríklad IntelliJ IDEA vývojové prostredie. Kotlin je navrhnutý tak, aby mohol byť spustený na JVM, tak ako iné java programy....

Kotlin plugin v IntelliJ IDEA

Pri programovaní aplikácie - programu v jazyku Kotlin vieme použiť napríklad IntelliJ IDEA vývojové prostredie. Ja toto prostredie odporúčam a v tomto článku sa dozvieš ako nastaviť Kotlin plugin v IntelliJ IDEA. V IntelliJ IDEA si musíme byť istý, že máme...

Share This

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