Map/Filter/Reduce, leniwe sekwencje
Używajcie map / filter / reduce do przekształcania, wybierania i łączenia danych, a następnie dodajcie .lazy , aby odroczyć pracę i uniknąć tablic pośrednich.
Map/Filter/Reduce, leniwe sekwencje to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 z 3. 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 Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 3 lekcji w sumie.
Główna idea
Podstawowe algorytmy:
- map: przekształca każdy element
- filter: zachowuje elementy spełniające predykat
- reduce: łączy elementy w jedną wartość
- .lazy: odracza wykonywanie, aby uniknąć tablic tymczasowych
map
map przekształca każdy element i zwraca nową tablicę.
let nums = [1, 2, 3]
let doubled = nums.map { $0 * 2 } // [2, 4, 6]
print(doubled)
let words = ["swift", "kit"]
let upper = words.map { $0.uppercased() } // ["SWIFT","KIT"]
print(upper)filter
filter zachowuje elementy, dla których predykat zwraca wartość true.
let scores = [45, 72, 88, 53]
let passing = scores.filter { $0 >= 60 } // [72, 88]
print(passing)
let names = ["Ana","Li","Max"]
let short = names.filter { $0.count <= 2 } // ["Li"]
print(short)reduce
reduce redukuje sekwencję do pojedynczego wyniku, używając wartości początkowej i domknięcia łączącego.
let total = [1,2,3,4].reduce(0) { acc, x in acc + x } // 10
print(total)
let joined = ["a","b","c"].reduce("") { $0 + $1 } // "abc"
print(joined)Leniwe wykonywanie na żądanie
.lazy tworzy odroczony potok: operacje są wykonywane w miarę pobierania elementów (np. za pomocą prefix, first lub iteracji).
let range = 1...10
let lazyPipeline = range.lazy
.map { x in print("map", x); return x * x }
.filter { x in print("filter", x); return x % 2 == 0 }
// Only the first 3 results are needed:
let firstThree = Array(lazyPipeline.prefix(3))
print("result:", firstThree)
// Notice how only the work needed for 3 elements ran.Wskazówki
Wskazówki:
- Należy łączyć map → filter → reduce, aby uzyskać czytelny przepływ danych.
- Należy dodawać .lazy, gdy pobierana jest tylko część potoku lub gdy chcemy uniknąć wartości tymczasowych.
- Materiałizację za pomocą
Array(...)należy stosować tylko wtedy, gdy potrzebna jest konkretna tablica.
Semantyka lazy
Szybkie sprawdzenie: Jaki wpływ ma .lazy na łańcuch map/filter?
Podsumowanie
Podsumowanie: Należy używać map do przekształcania, filter do wybierania, a reduce do łączenia. Należy dodawać .lazy na potrzeby obliczeń na żądanie i ograniczenia liczby alokacji.
Często zadawane pytania
Czy lekcja „Map/Filter/Reduce, leniwe sekwencje” jest bezpłatna?
Tak — pełny tekst „Map/Filter/Reduce, leniwe sekwencje” 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 Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 3 lekcji w sumie.
Co nauczysz się w „Map/Filter/Reduce, leniwe sekwencje”?
Używajcie map / filter / reduce do przekształcania, wybierania i łączenia danych, a następnie dodajcie .lazy , aby odroczyć pracę i uniknąć tablic pośrednich. Ćwiczysz Swift 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ąć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift 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 2 z 3.
Ile czasu zajmuje lekcja „Map/Filter/Reduce, leniwe sekwencje”?
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 Swift Academy?
Tak. Każda lekcja Swift 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
- Hierarchie Sequence/Collection
- Map/Filter/Reduce, leniwe sekwencje
- Niestandardowe iteratory i wskazówki dotyczące wydajności