0Pricing
Swift Academy · Урок

Основы Result<Success, Failure>

Создавайте значения Result и сопоставляйте их с образцами для явной обработки ошибок.

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

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

`Result` — это перечисление Swift с двумя вариантами: `.success` и `.failure`. Оно обеспечивает явную обработку ошибок без синтаксиса throws/catch.

Объявление Result

```swift func divide(_ a: Double, by b: Double) -> Result { guard b != 0 else { return .failure(.divisionByZero) } return .success(a / b) } enum DivisionError: Error { case divisionByZero } ```

Использование Result

```swift switch divide(10, by: 2) { case .success(let value): print("Result: \(value)") case .failure(let err): print("Error: \(err)") } ```

get() — выбрасывает ошибку при сбое

```swift let result = divide(10, by: 0) do { let value = try result.get() // throws DivisionError } catch { print(error) } ```

Хранение результатов

```swift var cache: [URL: Result] = [:] cache[url] = .success(data) cache[url] = .failure(URLError(.notConnectedToInternet)) ```

Result в асинхронных API

```swift func fetch(url: URL, completion: @escaping (Result) -> Void) { URLSession.shared.dataTask(with: url) { data, _, error in if let data { completion(.success(data)) } else { completion(.failure(error ?? URLError(.unknown))) } }.resume() } ```

Сопоставление с if case

```swift if case .success(let data) = result { process(data) } if case .failure(let err) = result { handle(err) } ```

Свойства успешного результата и сбоя

```swift let r: Result = .success(42) print(r.success) // Optional(42) — non-nil on success print(r.failure) // nil ```

Создание из кода, выбрасывающего ошибки

```swift let result = Result { try JSONDecoder().decode(User.self, from: data) } // .success(user) or .failure(decodingError) ```

Сравнение результатов

```swift let a: Result = .success(42) let b: Result = .success(42) // Cannot == directly unless Success/Failure are Equatable ```

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

Что делает `result.get()`, когда Result имеет значение `.failure`?

Итоги

Ключевые выводы: • `Result` — явный успех или сбой без выбрасывания ошибок • `.success(value)` / `.failure(error)` — два варианта • `.get()` выбрасывает ошибку при сбое • `Result { try ... }` связывает код, выбрасывающий ошибки, с Result • Подходит для хранения и передачи результатов, которые будут обработаны позже Далее: map и flatMap для Result.

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

Урок «Основы Result<Success, Failure>» бесплатный?

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

Чему я научусь в уроке «Основы Result<Success, Failure>»?

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

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

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

Сколько времени занимает урок «Основы Result<Success, Failure>»?

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

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

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

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

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