0Pricing
Swift Academy · Lekcja

Funkcje wyższego rzędu: map, flatMap, compactMap

Przekształcanie sekwencji bez mutowania za pomocą funkcji kolekcji Swift.

Funkcje wyższego rzędu: map, flatMap, compactMap to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 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 przyjmują inne funkcje lub je zwracają. Biblioteka kolekcji Swift opiera się na nich: `map`, `flatMap`, `compactMap`, `filter`, `reduce`.

map — przekształcanie każdego elementu

```swift let nums = [1,2,3,4] let squared = nums.map { $0 * $0 } // [1,4,9,16] let strs = nums.map(String.init) // ["1","2","3","4"] ```

flatMap — przekształcanie i spłaszczanie

```swift let words = ["hello world","foo bar"] let all = words.flatMap { $0.split(separator:" ").map(String.init) } // ["hello","world","foo","bar"] ```

compactMap — przekształcanie i odrzucanie wartości nil

```swift let mixed = ["1","two","3"] let nums = mixed.compactMap { Int($0) } // [1,3] ```

Przekazywanie referencji do funkcji

```swift func double(_ n: Int) -> Int { n * 2 } let result = [1,2,3].map(double) // [2,4,6] ``` Referencje do funkcji mogą zastępować literały domknięć.

Łączenie funkcji wyższego rzędu

```swift let total = (1...100) .filter { $0 % 2 == 0 } .map { $0 * $0 } .reduce(0, +) // sum of squares of even numbers 1-100 ```

flatMap dla wartości opcjonalnych

```swift let maybeStr: String? = "42" let maybeInt = maybeStr.flatMap { Int($0) } // Optional(42) let nil2: String? = nil let also = nil2.flatMap { Int($0) } // nil ```

Własna funkcja wyższego rzędu

```swift func applyTwice(_ f: (T) -> T, _ value: T) -> T { f(f(value)) } print(applyTwice({ $0 * 2 }, 3)) // 12 ```

sorted(by:) jako funkcja wyższego rzędu

```swift let words = ["banana","apple","cherry"] let sorted = words.sorted { $0.count < $1.count } // ["apple","banana","cherry"] ``` `sorted(by:)` przyjmuje funkcję porównującą.

Praktyka: przetwarzanie danych użytkowników

```swift struct User { var name: String; var score: Int } let users = [User(name:"A",score:80),User(name:"B",score:45),User(name:"C",score:92)] let topNames = users.filter { $0.score >= 80 }.map { $0.name }.sorted() // ["A","C"] ```

Szybkie sprawdzenie

Co robi `compactMap`, czego nie robi zwykłe `map`?

Podsumowanie

Najważniejsze informacje: • `map` — przekształca każdy element • `flatMap` — przekształca i spłaszcza zagnieżdżone wyniki • `compactMap` — przekształca i odrzuca wartości nil • Referencje do funkcji można przekazywać bezpośrednio: `.map(String.init)` • Można je łączyć w przejrzyste potoki przetwarzania danych Następny temat: kompozycja funkcji i potoki.

Często zadawane pytania

Czy lekcja „Funkcje wyższego rzędu: map, flatMap, compactMap” jest bezpłatna?

Tak — pełny tekst „Funkcje wyższego rzędu: map, flatMap, compactMap” 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 „Funkcje wyższego rzędu: map, flatMap, compactMap”?

Przekształcanie sekwencji bez mutowania za pomocą funkcji kolekcji Swift. Ć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 4.

Ile czasu zajmuje lekcja „Funkcje wyższego rzędu: map, flatMap, compactMap”?

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. Czyste funkcje i projektowanie bez efektów ubocznych
  2. Funkcje wyższego rzędu: map, flatMap, compactMap
  3. Kompozycja funkcji i potoki
  4. Leniwe sekwencje dla większej wydajności
← Powrót do Swift Academy