Lambda e funzioni di ordine superiore
Passi il comportamento come valore.
Lambda e funzioni di ordine superiore è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 4 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 Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 4 lezioni in totale.
Che cos'è una lambda?
Una lambda è una piccola funzione che può scrivere direttamente nel codice, senza assegnarle un nome.
La racchiuda tra parentesi graffe: { x -> x + 1 }. Le lambda consentono di passare il comportamento proprio come si passano i dati.
Le ha già utilizzate con map e filter.
Memorizzare una lambda in una variabile
Una lambda è un valore, quindi può memorizzarla in una variabile e chiamarla in seguito.
La chiami come una funzione, utilizzando le parentesi.
fun main() {
val square = { x: Int -> x * x }
println(square(5))
println(square(3))
}La scorciatoia it
Quando una lambda accetta esattamente un parametro, può evitare di assegnargli un nome e utilizzare it.
In questo modo le lambda brevi risultano compatte e leggibili.
fun main() {
val nums = listOf(1, 2, 3, 4)
val big = nums.filter { it > 2 }
println(big)
}Più parametri
Una lambda può accettare più di un parametro, separato da virgole prima della freccia.
L'ultima espressione nella lambda è il valore restituito.
fun main() {
val add = { a: Int, b: Int -> a + b }
println(add(4, 6))
}Funzioni di ordine superiore
Una funzione di ordine superiore è una funzione che accetta un'altra funzione come parametro o ne restituisce una.
Il tipo di funzione (Int) -> Int significa "accetta un Int e restituisce un Int". È così che funzionano map e filter.
Scrivere una funzione di ordine superiore
Qui definiamo applyTwice, che accetta una funzione e la esegue due volte.
Il parametro op ha tipo (Int) -> Int.
fun applyTwice(x: Int, op: (Int) -> Int): Int {
return op(op(x))
}
fun main() {
println(applyTwice(3) { it + 1 })
}Sintassi della lambda finale
Quando una lambda è l'ultimo argomento, può spostarla fuori dalle parentesi.
Per questo list.filter { ... } appare così pulito. Le due forme seguenti sono equivalenti.
fun main() {
val nums = listOf(1, 2, 3)
println(nums.map({ it * 2 }))
println(nums.map { it * 2 })
}Passare funzioni con nome
Può passare una funzione con nome già esistente quando è richiesta una lambda, utilizzando ::, chiamato riferimento a una funzione.
In questo modo evita di riscrivere la logica come lambda.
fun isOdd(n: Int) = n % 2 == 1
fun main() {
val nums = listOf(1, 2, 3, 4)
println(nums.filter(::isOdd))
}Restituire una funzione
Una funzione di ordine superiore può anche restituire una funzione. Qui multiplier crea una lambda personalizzata per la moltiplicazione.
Questa è una forma semplice di configurazione.
fun multiplier(factor: Int): (Int) -> Int {
return { it * factor }
}
fun main() {
val triple = multiplier(3)
println(triple(5))
}Le lambda catturano le variabili
Una lambda può leggere le variabili dell'ambito circostante. Questo si chiama closure.
Qui la lambda ricorda bonus anche dopo essere stata passata altrove.
fun main() {
val bonus = 10
val nums = listOf(1, 2, 3)
println(nums.map { it + bonus })
}Perché le lambda sono importanti su Android
Su Android, le lambda esprimono i callback in modo chiaro. Un listener per il clic di un pulsante è semplicemente una lambda che si passa al framework.
Ad esempio: button.setOnClickListener { showMenu() } esegue il codice quando si tocca il pulsante.
Verifica rapida
Verifichi la Sua comprensione delle lambda e delle funzioni di ordine superiore.
Riepilogo
Le lambda sono funzioni anonime inline scritte tra parentesi graffe, che utilizzano it per un singolo parametro.
Le funzioni di ordine superiore accettano o restituiscono funzioni, consentendo callback chiari e operazioni riutilizzabili come map e filter.
Domande Frequenti
La lezione «Lambda e funzioni di ordine superiore» è gratuita?
Sì — il testo completo di «Lambda e funzioni di ordine superiore» è 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 Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 4 lezioni in totale.
Cosa imparerò in «Lambda e funzioni di ordine superiore»?
Passi il comportamento come valore. Eserciti Android 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 Android Academy?
Non è richiesta alcuna esperienza precedente. Android 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 4 di 4.
Quanto tempo richiede la lezione «Lambda e funzioni di ordine superiore»?
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 Android Academy?
Sì. Ogni lezione Android 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
- Liste e liste mutabili
- Mappe e insiemi
- map, filter, forEach
- Lambda e funzioni di ordine superiore