0Pricing
Swift Academy · レッスン

Result<Success, Failure>の基礎

明示的なエラーハンドリングのために、Result値を作成しパターンマッチングします。

「Result<Success, Failure>の基礎」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

ようこそ

`Result` は、`.success` と `.failure` の2つのケースを持つSwiftのenumで、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() — 失敗時にthrowする

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

Resultを保存する

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

非同期APIでのResult

```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) } ```

SuccessとFailureのプロパティ

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

throwsから初期化する

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

Resultを比較する

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

確認問題

Resultが `.failure` のとき、`result.get()` は何をしますか?

まとめ

重要なポイント: • `Result` は、throwsを使わずに成功と失敗を明示的に表します • `.success(value)` / `.failure(error)` は2つのケースです • `.get()` は失敗時にthrowします • `Result { try ... }` はthrowするコードとResultを橋渡しします • 後で処理する結果の保存や受け渡しに便利です 次はResultのmapとflatMapです。

よくある質問

「Result<Success, Failure>の基礎」レッスンは無料ですか?

はい。「Result<Success, Failure>の基礎」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「Result<Success, Failure>の基礎」で何を学びますか?

明示的なエラーハンドリングのために、Result値を作成しパターンマッチングします。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Result<Success, Failure>の基礎」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Result の基礎
  2. ResultのmapとflatMap
  3. LocalizedErrorによるカスタムエラー型
  4. Resultからasync/awaitへの橋渡し
← Swift Academyに戻る