Sobes.tech
Middle

Kako funkcionišu lambda izrazi u programskom jeziku Kotlin?

sobes.tech АИ

Одговор од АИ

Izrazi lambda u Kotlinu predstavljaju anonimne funkcije. Mogu biti prosleđeni kao argumenti ili sačuvani u promenljive.

Ključne tačke:

  • Sintaksa: Zagrade {}. Parametri se navode pre strelice ->, telo funkcije nakon nje. Ako nema parametara, strelica je opcionalna.
  • Implicitno ime parametra it: Ako lambda ima jedan parametar, nije potrebno da ga eksplicitno deklaršete, biće dostupan pod imenom it.
  • Vrednost povratka: Poslednja izraza u telu lambde je njena vrednost povratka.
  • Zatvaranja (Closures): Lambde mogu pristupati i menjati promenljive iz opsega u kojem su definisane.

Primeri:

// Lambda bez parametara
val hello = { println("Hello, world!") }
hello() // Pozivanje lambde

// Lambda sa jednim parametrom (izričita deklaracija)
val square = { number: Int -> number * number }
println(square(5))

// Lambda sa jednim parametrom (korišćenje `it`)
val increment = { it + 1 }
println(increment(10))

// Lambda sa više parametara
val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3))

// Lambda kao argument funkcije višeg reda
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}
println(operate(4, 5, { x, y -> x * y })) // Prosleđivanje lambde

Upoređenje sa anonimnim funkcijama (detaljnije):

Osobina Lambda izraz Anonimna funkcija
Sintaksa {} fun (...)
Vrednost povratka Poslednji izraz return eksplicitno
return unutar Vraća iz roditeljske funkcije (neta lokalni return) Vraća iz same anonimne funkcije (lokalni return)
Korišćenje it Da (za jedan parametar) Ne

Lambde su široko korišćene u Kotlinu, posebno sa funkcijama višeg reda (map, filter, forEach i dr.), za kreiranje konciznog i izražajnog koda. Kompilator ih optimizuje.