0Pricing
Dart Academy · Lezione

fold, reduce ed espansione

Aggregare e appiattire gli iterable

fold, reduce ed espansione è 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.

Aggregare una raccolta

Spesso si desidera ridurre un'intera lista a un unico valore, ad esempio una somma o un massimo. Dart offre fold e reduce proprio per questo. 🧮

Ecco reduce

reduce combina gli elementi a coppie utilizzando la funzione indicata. Inizia dal primo elemento, quindi la lista non può essere vuota.

var sum = [1, 2, 3, 4].reduce((a, b) => a + b);
print(sum); // 10

reduce mantiene un risultato

A ogni passaggio riceve il risultato parziale e l'elemento successivo. Consideri a come l'accumulatore che cresce durante l'elaborazione.

var max = [3, 9, 2].reduce((a, b) => a > b ? a : b);
print(max); // 9

Il problema della lista vuota

Chiamare reduce su una lista vuota genera uno StateError. Quando una lista potrebbe essere vuota, utilizzi fold.

Ecco fold

fold è simile a reduce, ma richiede un valore iniziale. Questo valore iniziale determina il tipo del risultato e gestisce in sicurezza le liste vuote.

var total = [1, 2, 3].fold(0, (a, b) => a + b);
print(total); // 6

fold può cambiare tipo

Poiché il valore iniziale definisce il tipo, fold può trasformare una lista di int in una String, una Map o qualsiasi altro tipo necessario.

var joined = [1, 2, 3].fold('', (a, b) => '$a$b');
print(joined); // 123

fold è sicuro con una lista vuota

Con una lista vuota, fold restituisce semplicemente il valore iniziale. Nessun errore e nessun caso speciale da ricordare.

var s = <int>[].fold(0, (a, b) => a + b);
print(s); // 0

reduce e fold

Utilizzi reduce per una combinazione rapida dello stesso tipo su una lista non vuota. Scelga fold quando le serve un valore iniziale o un nuovo tipo di risultato.

Ecco expand

expand associa ogni elemento a un iterable, quindi li appiattisce tutti in un unico stream di valori. È map più flatten.

var r = [1, 2].expand((n) => [n, n * 10]);
print(r.toList()); // [1, 10, 2, 20]

Appiattire liste annidate

Un uso comune di expand consiste nel trasformare una lista di liste in un'unica lista piatta con una sola chiamata chiara.

var flat = [[1, 2], [3, 4]].expand((x) => x);
print(flat.toList()); // [1, 2, 3, 4]

Concatenare i tre metodi

Questi metodi si combinano magnificamente. Può usare expand per appiattire e poi fold per aggregare, in un unico pipeline leggibile.

var t = [[1, 2], [3]].expand((x) => x).fold(0, (a, b) => a + b);
print(t); // 6

Verifica rapida

Scelga lo strumento giusto per una somma sicura anche con una lista vuota.

Riepilogo

reduce combina, fold combina con un valore iniziale ed expand appiattisce. Insieme consentono di aggregare facilmente qualsiasi raccolta. 🎉

Domande Frequenti

La lezione «fold, reduce ed espansione» è gratuita?

Sì — il testo completo di «fold, reduce ed espansione» è 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 «fold, reduce ed espansione»?

Aggregare e appiattire gli iterable 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 «fold, reduce ed espansione»?

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

  1. Funzioni di ordine superiore e currying
  2. fold, reduce ed espansione
  3. Iterable lazy e generatori con sync*
  4. Composizione di pipeline di funzioni pure
← Torna a Dart Academy