Funzioni anonime e closure
Catturare variabili nelle funzioni inline.
Funzioni anonime e closure è una lezione Dart 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 Dart Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Dart Academy include 4 lezioni in totale.
Funzioni senza nome
A volte serve una funzione una sola volta e mai più. Una funzione anonima non ha nome e viene scritta direttamente nel punto in cui la si usa. ✨
La struttura di base
Una funzione anonima è costituita semplicemente da parametri e corpo, senza alcun nome davanti. Potete memorizzarla in una variabile.
var greet = (String n) {
print('Hi ' + n);
};Chiamare la funzione memorizzata
Una volta memorizzata, la si chiama tramite la variabile, proprio come una qualsiasi funzione con nome, usando le parentesi.
greet('Ada');Passarne una inline
Spesso si passa una funzione anonima direttamente a un metodo. Qui forEach la chiama per ogni elemento.
[1, 2, 3].forEach((n) {
print(n * 2);
});Funzioni anonime freccia
Per un corpo composto da una sola espressione, combinate le funzioni anonime con la freccia per mantenere il codice compatto.
var doubled = [1, 2, 3].map((n) => n * 2);Che cos'è una closure?
Una closure è una funzione che ricorda le variabili del punto in cui è stata creata, anche dopo la fine dell'ambito esterno.
Catturare una variabile
La funzione interna qui sotto cattura step. Continua a usare quel valore ogni volta che chiamate più avanti la funzione restituita.
Function adder(int step) {
return (int x) => x + step;
}Ogni closure è indipendente
Chiamate due volte la factory: ogni closure restituita conserva un valore catturato separato. Non interferiscono tra loro.
var add5 = adder(5);
var add10 = adder(10);Le closure conservano lo stato
Una variabile catturata può cambiare tra una chiamata e l'altra, permettendo a una closure di ricordare i progressi come un piccolo contatore.
int count = 0;
var tick = () => ++count;Perché è importante
Callback, gestori di eventi e metodi delle liste si basano tutti sulle closure. Permettono di associare il comportamento ai dati di cui ha bisogno.
Mantenetele piccole
Le closure inline sono efficaci quando sono brevi. Se una diventa complessa, assegnatele un vero nome così sarà facile da leggere per gli altri.
Verifica rapida
Che cosa rende una funzione una closure?
Riepilogo
Avete incontrato le funzioni anonime per gli usi occasionali e le closure, che catturano le variabili circostanti per conservare il proprio stato. 🎯
Domande Frequenti
La lezione «Funzioni anonime e closure» è gratuita?
Sì — il testo completo di «Funzioni anonime e closure» è 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 Dart Academy, passa a CoddyKit PRO. Il corso Dart Academy include 4 lezioni in totale.
Cosa imparerò in «Funzioni anonime e closure»?
Catturare variabili nelle funzioni inline. Eserciti Dart 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 Dart Academy?
Non è richiesta alcuna esperienza precedente. Dart 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 «Funzioni anonime e closure»?
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 Dart Academy?
Sì. Ogni lezione Dart 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
- Sintassi a freccia per funzioni su una riga
- Funzioni anonime e closure
- Tipi nullable e punto interrogativo
- Operatori null-aware: ?., ?? e !