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

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 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...

Kotlin when

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...

Share This

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