Sobes.tech
Middle

Come funzionano le espressioni lambda nel linguaggio di programmazione Kotlin?

sobes.tech AI

Risposta dell'AI

Le espressioni lambda in Kotlin rappresentano funzioni anonime. Possono essere passate come argomenti o memorizzate in variabili.

Punti chiave:

  • Sintassi: Parentesi graffe {}. I parametri sono indicati prima della freccia ->, il corpo della funzione dopo. Se non ci sono parametri, la freccia è opzionale.
  • Nome implicito del parametro it: Se la lambda ha un solo parametro, non è necessario dichiararlo esplicitamente, sarà accessibile con il nome it.
  • Valore di ritorno: L'ultima espressione nel corpo della lambda è il suo valore di ritorno.
  • Chiusure (Closures): Le lambdas possono accedere e modificare variabili dell'ambito in cui sono state definite.

Esempi:

// Lambda senza parametri
val hello = { println("Hello, world!") }
hello() // Chiamata della lambda

// Lambda con un parametro (dichiarazione esplicita)
val square = { number: Int -> number * number }
println(square(5))

// Lambda con un parametro (uso di 'it')
val increment = { it + 1 }
println(increment(10))

// Lambda con più parametri
val sum = { a: Int, b: Int -> a + b }
println(sum(2, 3))

// Lambda come argomento di una funzione di ordine superiore
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}
println(operate(4, 5, { x, y -> x * y })) // Passaggio di lambda

Confronto con funzioni anonime (più dettagli):

Caratteristica Espressione lambda Funzione anonima
Sintassi {} fun (...)
Valore di ritorno Ultima espressione return esplicito
return interno Ritorna dalla funzione genitore (ritorno non locale) Ritorna dalla funzione anonima (ritorno locale)
Uso di it Sì (per un parametro) No

Le lambdas sono ampiamente usate in Kotlin, specialmente con funzioni di ordine superiore (map, filter, forEach, ecc.), per creare codice conciso ed espressivo. Il compilatore le ottimizza.