Dart Academy · Lektion

Omforma streams: map, where och take

Ändra formen på en händelsesekvens

Lektion 3 av 413 steg

Omforma streams: map, where och take är en gratis lektion i Dart Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Dart Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Dart Academy innehåller totalt 4 lektioner.

Streams kan omformas

Precis som listor har streams praktiska metoder som omformar deras händelser. Ni kan transformera en stream till en ny utan att ändra källan.

map transformerar varje händelse

Metoden map kör en funktion på varje händelse och skickar resultatet vidare. Den omvandlar en stream med värden till en stream med transformerade värden.

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

map behåller antalet

Med map förblir antalet händelser detsamma; bara deras form ändras. Tre indata ger alltid exakt tre utdata. ✨

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

where filtrerar händelser

Metoden where behåller bara händelser som klarar ett test. Allt som returnerar false tas bort från den nya streamen.

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

where kan minska streamen

Till skillnad från map kan where skicka färre händelser än den tog emot. Om inget klarar testet förblir den resulterande streamen tom.

take begränsar antalet

Metoden take skickar bara de första n händelserna och slutar sedan lyssna. Den passar perfekt när ni bara behöver några få värden från en lång stream. 🎯

final firstThree = bigStream.take(3);

take avbryter tidigt

Efter att ha levererat sina n händelser avbryter take automatiskt prenumerationen på källan. Den ursprungliga streamen slutar då att producera händelser åt er.

Kedja transformationer

De här metoderna returnerar nya streams, så ni kan kedja dem. Läs kedjan från vänster till höger: filtrera, transformera och begränsa.

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

Lata av naturen

Transformationer är lazy: inget körs förrän ni börjar lyssna. Kedjan bearbetar bara händelser när de anländer, en i taget.

Fler verktyg: takeWhile och skip

Utöver de tre grundmetoderna skickar takeWhile händelser tills ett test misslyckas, medan skip ignorerar de första n händelserna. Samma kedjestil gäller.

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

Använd resultatet

Efter transformeringen läser ni den nya streamen med await for eller lyssnar på den. Varje skickat värde har redan passerat genom hela kedjan.

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

Snabb kontroll

Vilken metod kan minska antalet händelser?

Sammanfattning

Ni kan omforma streams med map för att transformera, where för att filtrera och take för att begränsa. Alla kan kedjas och är lata tills ni börjar lyssna. 🎉

Gratis att börja

Lär dig Dart med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Omforma streams: map, where och take” gratis?

Ja – hela texten till ”Omforma streams: map, where och take” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Dart Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Dart Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Omforma streams: map, where och take”?

Ändra formen på en händelsesekvens Ni övar på Dart Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Dart Academy?

Du behöver inga förkunskaper. Utbildningen i Dart Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Omforma streams: map, where och take”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Dart Academy-lektionen?

Ja. Varje Dart Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Lyssna med await for
  2. Enskilda streams kontra broadcast streams
  3. Omforma streams: map, where och take
  4. Skapa streams med async*
← Tillbaka till Dart Academy