0Pricing
Swift Academy · Урок

Функции высшего порядка: map, flatMap, compactMap

Преобразуйте последовательности без изменения данных с помощью функций коллекций Swift.

«Функции высшего порядка: map, flatMap, compactMap» — бесплатный урок Swift Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Добро пожаловать

Функции высшего порядка принимают другие функции или возвращают их. Библиотека коллекций Swift построена на них: `map`, `flatMap`, `compactMap`, `filter`, `reduce`.

map — Преобразование каждого элемента

```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 — Преобразование и уплощение

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

compactMap — Преобразование и удаление пустых значений

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

Передача ссылок на функции

```swift func double(_ n: Int) -> Int { n * 2 } let result = [1,2,3].map(double) // [2,4,6] ``` Ссылки на функции могут заменять литералы замыканий.

Цепочка функций высшего порядка

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

flatMap для опциональных значений

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

Пользовательская функция высшего порядка

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

sorted(by:) как HOF

```swift let words = ["banana","apple","cherry"] let sorted = words.sorted { $0.count < $1.count } // ["apple","banana","cherry"] ``` `sorted(by:)` принимает функцию сравнения.

Практика: обработка данных пользователя

```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"] ```

Быстрая проверка

Что делает `compactMap`, чего не делает обычный `map`?

Итоги

Основные выводы: • `map` — преобразует каждый элемент • `flatMap` — преобразует и уплощает вложенные результаты • `compactMap` — преобразует и удаляет пустые значения • Передавайте ссылки на функции напрямую: `.map(String.init)` • Объединяйте их в чистые конвейеры обработки данных Далее: композиция функций и конвейеры.

Часто задаваемые вопросы

Урок «Функции высшего порядка: map, flatMap, compactMap» бесплатный?

Да — полный текст урока «Функции высшего порядка: map, flatMap, compactMap» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Функции высшего порядка: map, flatMap, compactMap»?

Преобразуйте последовательности без изменения данных с помощью функций коллекций Swift. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Функции высшего порядка: map, flatMap, compactMap»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Чистые функции и проектирование без побочных эффектов
  2. Функции высшего порядка: map, flatMap, compactMap
  3. Композиция функций и конвейеры
  4. Ленивые последовательности для повышения эффективности
← Назад к Swift Academy