0Pricing
Kotlin Academy · Lezione

Passare lambda alle funzioni

Passi lambda come argomenti e utilizzi la sintassi della lambda finale.

Passare lambda alle funzioni è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.

Funzioni che accettano lambda

Una funzione di ordine superiore è una funzione che accetta una funzione, come una lambda, come parametro. È così che funzionano map, filter e forEach.

Dichiarare una funzione di ordine superiore

Utilizzi un tipo funzione come tipo del parametro.
fun applyTwice(n: Int, op: (Int) -> Int): Int {
    return op(op(n))
}
println(applyTwice(3, { it * 2 }))  // 12

Sintassi della trailing lambda

Se l'ultimo parametro è una funzione, può spostare la lambda fuori dalle parentesi. Questa è la sintassi della «trailing lambda».
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))

// Standard:
applyTwice(3, { it * 2 })
// Trailing lambda:
applyTwice(3) { it * 2 }

Trailing lambda senza parentesi

Quando la lambda è l'unico argomento, può omettere completamente le parentesi.
fun execute(block: () -> Unit) = block()

// With parens:
execute({ println("Hello") })
// Without parens (idiomatic):
execute { println("Hello") }

Passare una variabile lambda

Può passare un riferimento a una lambda memorizzata utilizzando il nome della variabile.
val double = { n: Int -> n * 2 }
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))
println(applyTwice(5, double))  // 20

Riferimenti a funzioni con ::

Utilizzi :: per passare una funzione denominata come argomento compatibile con le lambda.
fun triple(n: Int) = n * 3
fun applyTwice(n: Int, op: (Int) -> Int) = op(op(n))
println(applyTwice(2, ::triple))  // 18

Più parametri lambda

Una funzione può accettare più parametri lambda. Solo l'ultima può usare la sintassi della lambda finale.
fun transform(
    value: Int,
    before: (Int) -> Int,
    after: (Int) -> Int
) = after(before(value))

println(transform(5, { it * 2 }, { it + 1 }))  // 11

Passare una lambda a filter

filter accetta una lambda predicato: una funzione che va da un elemento a Boolean.
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evens = numbers.filter { it % 2 == 0 }
println(evens)  // [2, 4, 6]

Concatenare funzioni di ordine superiore

Concateni più chiamate a funzioni di ordine superiore per creare pipeline di dati espressive.
val result = (1..10)
    .filter { it % 2 != 0 }  // odds
    .map { it * it }          // square
    .take(3)                  // first 3
println(result)  // [1, 9, 25]

Acquisire variabili nelle lambda

Le lambda possono acquisire variabili dall'ambito circostante (closure). In Kotlin possono persino acquisire e modificare una var.
var total = 0
listOf(1, 2, 3, 4).forEach { total += it }
println(total)  // 10

Restituire una lambda da una funzione

Le funzioni di ordine superiore possono anche restituire lambda, creando funzioni factory.
fun multiplierOf(factor: Int): (Int) -> Int {
    return { n -> n * factor }
}
val double = multiplierOf(2)
val triple = multiplierOf(3)
println(double(5))  // 10
println(triple(5))  // 15

Verifica rapida

Quando può spostare una lambda fuori dalle parentesi usando la sintassi della lambda finale?

Riepilogo

Le funzioni di ordine superiore accettano lambda come parametri. La sintassi della lambda finale sposta la lambda fuori dalle parentesi quando è l'ultima. :: passa riferimenti a funzioni con nome. Prossimo argomento: il parametro implicito 'it'!

Domande Frequenti

La lezione «Passare lambda alle funzioni» è gratuita?

Sì — il testo completo di «Passare lambda alle funzioni» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.

Cosa imparerò in «Passare lambda alle funzioni»?

Passi lambda come argomenti e utilizzi la sintassi della lambda finale. Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Kotlin Academy?

Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Passare lambda alle funzioni»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?

Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Che cos'è una lambda? Sintassi e tipi
  2. Passare lambda alle funzioni
  3. it: il parametro implicito
  4. filter, map e find sulle collezioni
← Torna a Kotlin Academy