Middle
Ako fungujú lambda výrazy v programovacom jazyku Kotlin?
sobes.tech AI
Odpoveď od AI
Izrazi lambda v Kotlinu predstavljajo anonimne funkcije. Lahko jih posredujemo kot argumente ali shranimo v spremenljivke.
Ključne točke:
- Sintaksa: Okvirji
{}. Parametri so navedeni pred puščico->, telo funkcije za njo. Če ni parametrov, je puščica opcijska. - Implicitno ime parametra
it: Če ima lambda en parameter, ga ni treba eksplicitno deklarirati, je dostopen pod imenomit. - Vrednost povratka: Zadnja izraz v telesu lambde je njena vrednost povratka.
- Zaprtja (Closures): Lambde lahko dostopajo in spreminjajo spremenljivke iz območja, v katerem so bile definirane.
Primeri:
// Lambda brez parametrov
val hello = { println("Hello, world!") }
hello() // Klic lambde
// Lambda z enim parametrom (izrecna deklaracija)
val square = { number: Int -> number * number }
println(square(5))
// Lambda z enim parametrom (uporaba `it`)
val increment = { it + 1 }
println(increment(10))
// Lambda z več parametri
val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3))
// Lambda kot argument funkcije višjega reda
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
println(operate(4, 5, { x, y -> x * y })) // Prenos lambde
Primerjava z anonimnimi funkcijami (podrobneje):
| Značilnost | Lambda izraz | Anonimna funkcija |
|---|---|---|
| Sintaksa | {} |
fun (...) |
| Vrednost povratka | Zadnji izraz | return eksplicitno |
return znotraj |
Vrne iz nadrejene funkcije (ne lokalni return) | Vrne iz same anonimne funkcije (lokalni return) |
Uporaba it |
Da (za en parameter) | Ne |
Lambde so široko uporabljene v Kotlinu, zlasti z funkcijami višjega reda (map, filter, forEach itd.), za ustvarjanje jedrnatega in izraznega kode. Prevajalnik jih optimizira.