Dart Academy · leksjon

fold, reduce og expand

Aggreger og flat ut iterables

Leksjon 2 av 413 trinn

fold, reduce og expand er en gratis leksjon i Dart Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Dart Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Dart Academy inneholder totalt 4 leksjoner.

Aggregere en samling

Ofte vil du redusere en hel liste til én verdi, for eksempel en sum eller maksimumsverdi. Dart gir deg fold og reduce til nettopp dette. 🧮

Møt reduce

reduce kombinerer elementene parvis ved hjelp av funksjonen din. Den starter med det første elementet, så listen kan ikke være tom.

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

reduce bærer med seg et resultat

Hvert trinn mottar resultatet så langt og det neste elementet. Tenk på a som akkumulatoren som vokser underveis.

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

Fellen med tomme lister

Hvis du kaller reduce på en tom liste, kastes en StateError. Når en liste kan være tom, bør du bruke fold i stedet.

Møt fold

fold ligner på reduce, men du oppgir en startverdi. Denne startverdien bestemmer resultattypen og håndterer tomme lister trygt.

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

fold kan endre type

Ettersom startverdien bestemmer typen, kan fold gjøre en liste med ints om til en String, en Map eller hva du måtte trenge.

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

fold er trygt på tomme lister

Med en tom liste returnerer fold ganske enkelt startverdien. Ingen krasj og ingen spesialtilfeller å huske på.

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

reduce kontra fold

Bruk reduce for en rask kombinasjon av samme type på en liste som ikke er tom. Bruk fold når du trenger en startverdi eller en ny resultattype.

Møt expand

expand gjør hvert element om til en iterable og flater dem deretter ut til én strøm av verdier. Det er map pluss flatten.

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

Flate ut nøstede lister

En vanlig oppgave for expand er å flate ut en liste med lister til én enkelt, flat liste i ett ryddig kall.

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

Kjede de tre

Disse metodene kan settes sammen på en elegant måte. Du kan bruke expand til å flate ut og deretter fold til å aggregere i én lesbar pipeline.

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

Kjapp sjekk

Velg riktig verktøy for en sum som håndterer tomme lister.

Oppsummering

reduce kombinerer, fold kombinerer med en startverdi, og expand flater ut. Sammen gjør de det enkelt å aggregere enhver samling. 🎉

Gratis å komme i gang

Lær deg Dart med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «fold, reduce og expand» gratis?

Ja – hele teksten i «fold, reduce og expand» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Dart Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Dart Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «fold, reduce og expand»?

Aggreger og flat ut iterables Du øver på Dart Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Dart Academy?

Ingen tidligere erfaring er nødvendig. Dart Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «fold, reduce og expand»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Dart Academy-leksjonen?

Ja. Alle Dart Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Høyereordensfunksjoner og currying
  2. fold, reduce og expand
  3. Late iterables og generatorer med sync*
  4. Sette sammen rør av rene funksjoner
← Tilbake til Dart Academy