Transformowanie strumieni: map, where, take
Zmiana kształtu sekwencji zdarzeń
Transformowanie strumieni: map, where, take to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.
Strumienie można przekształcać
Podobnie jak listy, strumienie mają przydatne metody zmieniające ich zdarzenia. Można przekształcić strumień w nowy bez modyfikowania źródła.
map przekształca każde zdarzenie
Metoda map uruchamia funkcję dla każdego zdarzenia i emituje wynik. Zamienia jeden strumień wartości w strumień przekształconych wartości.
final doubled = numbers.map((n) => n * 2);map zachowuje liczbę zdarzeń
W przypadku map liczba zdarzeń pozostaje taka sama — zmienia się tylko ich postać. Trzy dane wejściowe zawsze dają dokładnie trzy wyniki. ✨
Stream.fromIterable([1, 2, 3])
.map((n) => 'Item $n');where filtruje zdarzenia
Metoda where zachowuje tylko zdarzenia, które przejdą test. Wszystko, co zwróci wartość false, zostaje usunięte z nowego strumienia.
final evens = numbers.where((n) => n.isEven);where może zmniejszyć strumień
W przeciwieństwie do map metoda where może wyemitować mniej zdarzeń, niż otrzymała. Jeśli żadne zdarzenie nie przejdzie testu, wynikowy strumień pozostanie pusty.
take ogranicza liczbę zdarzeń
Metoda take emituje tylko pierwszych n zdarzeń, a następnie przestaje nasłuchiwać. Jest idealna, gdy z długiego strumienia potrzebnych jest tylko kilka wartości. 🎯
final firstThree = bigStream.take(3);take anuluje wcześniej
Po dostarczeniu n zdarzeń metoda take automatycznie anuluje subskrypcję źródłowego strumienia. Oryginalny strumień przestaje generować zdarzenia na potrzeby tego odbiorcy.
Łączenie przekształceń
Metody te zwracają nowe strumienie, więc można je łączyć. Łańcuch należy czytać od lewej do prawej: filtrowanie, następnie przekształcanie, a na końcu ograniczenie.
numbers
.where((n) => n.isEven)
.map((n) => n * 10)
.take(2);Z natury leniwe
Przekształcenia są leniwe: nic się nie wykonuje, dopóki strumień nie jest nasłuchiwany. Łańcuch przetwarza zdarzenia dopiero w miarę ich nadejścia, po jednym naraz.
Więcej narzędzi: takeWhile i skip
Oprócz trzech podstawowych metod takeWhile emituje zdarzenia do momentu niepowodzenia testu, a skip pomija pierwszych n zdarzeń. Obowiązuje ten sam styl łączenia metod.
stream.skip(2).takeWhile((n) => n < 100);Odczytywanie wyniku
Po przekształceniu nowy strumień można odczytać za pomocą await for albo nasłuchiwać go bezpośrednio. Każda wyemitowana wartość przeszła już przez cały zdefiniowany łańcuch.
await for (final v in transformed) {
print(v);
}Szybki test
Która metoda może zmniejszyć liczbę zdarzeń?
Podsumowanie
Strumienie można przekształcać za pomocą map, filtrować przez where i ograniczać przez take. Wszystkie te metody można łączyć, a ich działanie pozostaje leniwe do czasu rozpoczęcia nasłuchiwania. 🎉
Ucz się Dart dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Transformowanie strumieni: map, where, take” jest bezpłatna?
Tak — pełny tekst „Transformowanie strumieni: map, where, take” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Transformowanie strumieni: map, where, take”?
Zmiana kształtu sekwencji zdarzeń Ćwiczysz Dart Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Dart Academy?
Nie wymagamy żadnego doświadczenia. Dart Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Transformowanie strumieni: map, where, take”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Dart Academy?
Tak. Każda lekcja Dart Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Nasłuchiwanie za pomocą await for
- Strumienie pojedyncze a rozgłoszeniowe
- Transformowanie strumieni: map, where, take
- Tworzenie strumieni za pomocą async*