Swift Academy · Урок

map и flatMap для Result

Цепочкой преобразуйте успешные значения без вложенных операторов switch.

Урок 2 из 412 шагов

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

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

`map` и `flatMap` для `Result` позволяют преобразовывать успешные значения без вложенных операторов switch, сохраняя код плоским и понятным.

map для Result

```swift let r: Result = .success(5) let doubled = r.map { $0 * 2 } // .success(10) let failed: Result = .failure(MyError.bad) let same = failed.map { $0 * 2 } // .failure(MyError.bad) ```

mapError для Result

```swift let r: Result = .failure(URLError(.notConnectedToInternet)) let mapped = r.mapError { AppError.network($0) } // Result ```

flatMap — объединение операций, которые могут завершиться сбоем

```swift func parseJSON(_ data: Data) -> Result { ... } func validate(_ user: User) -> Result { ... } let result: Result = fetchResult .flatMap { parseJSON($0) } .flatMap { validate($0).mapError { $0 as Error } } ```

flatMapError

```swift func recover(_ e: NetworkError) -> Result { .success(cachedData) } let result = networkResult.flatMapError { recover($0) } ```

map и flatMap для Result

• `map`: преобразует успешное значение; если преобразование возвращает `T`, результатом будет `Result` • `flatMap`: преобразование возвращает `Result` и предотвращает вложенность `Result,E>`

Объединение трёх операций

```swift fetchData(url) .map { parse($0) } .flatMap { validate($0) } .map { transform($0) } // Each step only runs if previous succeeded ```

Сравнение с цепочкой Optional

Цепочка вызовов Result похожа на цепочку Optional для обработки ошибок: ```swift // Optional chain: name?.uppercased()?.prefix(5) // Result chain: result.map { $0.uppercased() }.map { $0.prefix(5) } ```

Преобразование в Optional

```swift let opt = result.success // Value? — nil on failure let val = try? result.get() // Value? — nil on failure ```

Восстановление по шаблону, похожему на ??

```swift let value = (try? result.get()) ?? defaultValue ```

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

Что делает `result.flatMap { transform($0) }`, если `result` имеет значение `.failure`?

Итоги

Ключевые выводы: • `map` преобразует успешное значение и передаёт сбой дальше без изменений • `mapError` преобразует тип сбоя • `flatMap` объединяет операции, которые сами возвращают Result • Позволяет избежать вложенных операторов switch • Используйте цепочки для создания понятных конвейеров с передачей ошибок Далее: пользовательские типы ошибок.
Можно начать бесплатно

Изучай Swift с ИИ-репетитором — бесплатно

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

Курсы
122
Уроки
409

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

Урок «map и flatMap для Result» бесплатный?

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

Чему я научусь в уроке «map и flatMap для Result»?

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

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

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

Сколько времени занимает урок «map и flatMap для Result»?

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

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

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

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

  1. Основы Result
  2. map и flatMap для Result
  3. Пользовательские типы ошибок с LocalizedError
  4. Переход от Result к async/await
← Назад к Swift Academy