Dart Academy · leksjon

Transformer strømmer: map, where og take

Form om en sekvens av hendelser.

Leksjon 3 av 413 trinn

Transformer strømmer: map, where og take er en gratis leksjon i Dart Academy på CoddyKit. Dette er leksjon 3 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.

Strømmer kan transformeres

Akkurat som lister har strømmer praktiske metoder som endrer hendelsene deres. Du kan transformere en strøm til en ny strøm uten å endre kilden.

map transformerer hver hendelse

Metoden map kjører en funksjon på hver hendelse og sender ut resultatet. Den gjør én strøm med verdier om til en strøm med transformerte verdier.

final doubled = numbers.map((n) => n * 2);

map beholder antallet

Med map forblir antallet hendelser det samme; bare formen deres endres. Tre inndata gir alltid nøyaktig tre utdata. ✨

Stream.fromIterable([1, 2, 3])
    .map((n) => 'Item $n');

where filtrerer hendelser

Metoden where beholder bare hendelser som består en test. Alt som gir false, fjernes fra den nye strømmen.

final evens = numbers.where((n) => n.isEven);

where kan gjøre strømmen mindre

I motsetning til map kan where sende ut færre hendelser enn den mottok. Hvis ingenting består testen, forblir den resulterende strømmen tom.

take begrenser antallet

Metoden take sender bare ut de første n hendelsene og slutter deretter å lytte. Den er perfekt når du bare trenger noen få verdier fra en lang strøm. 🎯

final firstThree = bigStream.take(3);

take avbryter tidlig

Etter å ha levert de n hendelsene avbryter take automatisk abonnementet på kilden. Den opprinnelige strømmen slutter å produsere for deg.

Kjede sammen transformasjoner

Disse metodene returnerer nye strømmer, så du kan kjede dem sammen. Les kjeden fra venstre mot høyre: filtrer, transformer og begrens deretter.

numbers
    .where((n) => n.isEven)
    .map((n) => n * 10)
    .take(2);

Lazy av natur

Transformasjoner er lazy: ingenting kjører før du lytter. Kjeden behandler bare hendelser etter hvert som de kommer, én om gangen.

Flere verktøy: takeWhile og skip

I tillegg til de tre grunnmetodene sender takeWhile ut hendelser til en test feiler, mens skip ignorerer de første n hendelsene. Den samme kjedestilen gjelder.

stream.skip(2).takeWhile((n) => n < 100);

Bruke resultatet

Etter transformeringen kan du lese den nye strømmen med await for eller lytte til den. Hver verdi som sendes ut, har allerede gått gjennom hele kjeden din.

await for (final v in transformed) {
  print(v);
}

Hurtigsjekk

Hvilken metode kan redusere antallet hendelser?

Oppsummering

Du kan endre strømmer med map for å transformere, where for å filtrere og take for å begrense. Alle kan kjedes sammen og er lazy til du lytter. 🎉

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 «Transformer strømmer: map, where og take» gratis?

Ja – hele teksten i «Transformer strømmer: map, where og take» 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 «Transformer strømmer: map, where og take»?

Form om en sekvens av hendelser. 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 3 av 4.

Hvor lang tid tar leksjonen «Transformer strømmer: map, where og take»?

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. Lytt med await for
  2. Single- eller broadcast-strømmer
  3. Transformer strømmer: map, where og take
  4. Opprett strømmer med async*
← Tilbake til Dart Academy