Jak se v Kotlinu popisují funkce?
sobes.tech AI
Odpověď od AI
Funkce jsou deklarovány pomocí klíčového slova fun, za kterým následuje název funkce, seznam parametrů v závorkách (volitelně), dvojtečka a návratový typ (volitelně). Tělo funkce je uzavřeno v složených závorkách. Pokud je vynechán návratový typ, funkce vrací Unit (ekvivalent void v jiných jazycích).
// Funkce bez parametrů a bez návratové hodnoty
fun greet() {
println("Hello!")
}
// Funkce s parametry
fun add(x: Int, y: Int): Int {
return x + y
}
// Funkce s jedním výrazem (zkrácená syntaxe)
fun multiply(a: Int, b: Int) = a * b
Parametry funkce jsou deklarovány ve formátu názevParametru: Typ. Je možné specifikovat výchozí hodnoty parametrů.
fun sendMessage(message: String, sender: String = "Unknown") {
println("$sender: $message")
}
Funkce mohou být deklarovány na úrovni souboru nebo jako členové tříd, objektů nebo rozhraní.
-
Funkce na úrovni souboru: Deklarují se mimo třídy.
fun calculateArea(radius: Double): Double { return Math.PI * radius * radius } -
Členové funkce: Deklarují se uvnitř tříd.
class MyClass { fun doSomething() { println("Doing something.") } } -
Rozšiřující funkce: Umožňují "přidat" funkce ke stávajícím třídám bez změny jejich zdrojového kódu.
fun String.reverseAndUpperCase(): String { return this.reversed().toUpperCase() }
Lambda výrazy a anonymní funkce jsou funkcionální literály, které lze předat jako argumenty nebo přiřadit proměnným.
val sum: (Int, Int) -> Int = { x, y -> x + y }
val greeting = { name: String -> "Hello, $name!" }
Funkce vyššího řádu přijímají funkce jako parametry nebo vracejí funkce.
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
val result = operate(5, 3, { x, y -> x * y }) // výsledek = 15
Přetížení funkcí (různé funkce se stejným názvem, ale různými signaturami) je automaticky podporováno.
fun printInfo(name: String) {
println("Name: $name")
}
fun printInfo(age: Int) {
println("Age: $age")
}