Swift Academy · Lekcja

Map, Filter i Reduce na tablicach

Przekształcać tablice za pomocą funkcyjnych funkcji wyższego rzędu

Lekcja 3 z 412 kroki

Map, Filter i Reduce na tablicach to bezpłatna lekcja Swift 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 Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Funkcje wyższego rzędu języka Swift — `map`, `filter` i `reduce` — przekształcają kolekcje bez ich modyfikowania. Dzięki nim intencje kodu są wyraźniejsze, a podatne na błędy pętle stają się zbędne.

map — przekształcanie każdego elementu

```swift let nums = [1, 2, 3, 4] let doubled = nums.map { $0 * 2 } // [2,4,6,8] let strings = nums.map { "Item \($0)" } // ["Item 1","Item 2",...] ``` `map` stosuje closure do każdego elementu i zwraca nową tablicę wyników.

filter — zachowywanie pasujących elementów

```swift let scores = [45, 80, 92, 37, 68] let passing = scores.filter { $0 >= 60 } // [80,92,68] let even = (1...10).filter { $0 % 2 == 0 } // [2,4,6,8,10] ``` `filter` zwraca nową tablicę zawierającą wyłącznie elementy, dla których closure zwraca `true`.

reduce — łączenie w jedną wartość

```swift let nums = [1, 2, 3, 4, 5] let sum = nums.reduce(0) { $0 + $1 } // 15 let product = nums.reduce(1, *) // 120 let joined = ["a","b","c"].reduce("") { $0 + $1 } // "abc" ```

Łączenie map, filter i reduce

```swift let result = (1...10) .filter { $0 % 2 == 0 } // [2,4,6,8,10] .map { $0 * $0 } // [4,16,36,64,100] .reduce(0, +) // 220 ``` Łańcuchowanie czyta się od lewej do prawej, dzięki czemu potok danych jest jasno przedstawiony.

compactMap — mapowanie i rozpakowywanie

```swift let strings = ["1","two","3","four","5"] let nums = strings.compactMap { Int($0) } // [1,3,5] ``` `compactMap` przekształca wartości i usuwa wyniki nil — doskonale nadaje się do konwersji, które mogą się nie powieść.

flatMap — spłaszczanie zagnieżdżonych tablic

```swift let nested = [[1,2,3],[4,5],[6]] let flat = nested.flatMap { $0 } // [1,2,3,4,5,6] let words = ["hello world","foo bar"] let all = words.flatMap { $0.split(separator: " ") } // ["hello","world","foo","bar"] ```

forEach — tylko efekty uboczne

```swift [1, 2, 3].forEach { print($0) } ``` `forEach` przypomina pętlę `for-in`, ale nie można w nim używać `break` ani `continue`. Należy go używać tylko wtedy, gdy potrzebne są efekty uboczne i nie trzeba wcześniej przerywać działania.

reduce(into:) dla słowników

```swift let words = ["apple","banana","apricot","blueberry"] let grouped = words.reduce(into: [Character:[String]]()) { dict, word in let key = word.first! dict[key, default: []].append(word) } // ["a":["apple","apricot"],"b":["banana","blueberry"]] ```

Leniwe łańcuchy zwiększające wydajność

```swift let lazyResult = (1...1_000_000) .lazy .filter { $0 % 7 == 0 } .map { $0 * 2 } .prefix(5) // No intermediate arrays created! ``` Dodaj `.lazy` na początku łańcucha, aby obliczenia były wykonywane na żądanie.

Szybki test

Która funkcja przekształca każdy element i usuwa wyniki nil?

Podsumowanie

Najważniejsze informacje: • `map` — przekształca każdy element w nową tablicę • `filter` — zachowuje elementy pasujące do predykatu • `reduce` — składa elementy w pojedynczą wartość akumulowaną • `compactMap` — przekształca elementy i odrzuca wartości nil • `flatMap` — przekształca elementy i spłaszcza zagnieżdżone sekwencje • Łańcuchuj operacje z `.lazy`, aby uniknąć tworzenia pośrednich kolekcji Dalej: tablice 2D i zagnieżdżone kolekcje.
Bezpłatny start

Ucz się Swift 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
122
Lekcje
409

Często zadawane pytania

Czy lekcja „Map, Filter i Reduce na tablicach” jest bezpłatna?

Tak — pełny tekst „Map, Filter i Reduce na tablicach” 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 4 lekcji w sumie.

Co nauczysz się w „Map, Filter i Reduce na tablicach”?

Przekształcać tablice za pomocą funkcyjnych funkcji wyższego rzędu Ć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 3 z 4.

Ile czasu zajmuje lekcja „Map, Filter i Reduce na tablicach”?

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

  1. Tworzenie i modyfikowanie tablic
  2. Sortowanie, wyszukiwanie i wycinanie
  3. Map, Filter i Reduce na tablicach
  4. Tablice dwuwymiarowe i zagnieżdżone kolekcje
← Powrót do Swift Academy