fold, reduce og expand
Aggreger og flat ut iterables
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); // 10reduce 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); // 9Fellen 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); // 6fold 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); // 123fold 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); // 0reduce 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); // 6Kjapp 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. 🎉
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
- Høyereordensfunksjoner og currying
- fold, reduce og expand
- Late iterables og generatorer med sync*
- Sette sammen rør av rene funksjoner