0Pricing
Swift Academy · レッスン

豊富なデータのための関連値

ケースにペイロードを付加し、パターンマッチングで取り出します。

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

ようこそ

associated valueを使うと、各列挙型のcaseに追加データを持たせられます。列挙型が強力な判別共用体となり、Swiftで型安全な状態モデリングを行うための基盤になります。

associated valueの定義

```swift enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) } let product = Barcode.upc(8,85909,51226,3) let web = Barcode.qrCode("https://example.com") ```

switchでassociated valueを取り出す

```swift switch barcode { case .upc(let n, let m, let p, let c): print("UPC: \(n)-\(m)-\(p)-\(c)") case .qrCode(let code): print("QR: \(code)") } ``` または、`case let`を使ってすべてを一度に束縛できます: ```swift case let .upc(n,m,p,c): ... ```

名前付き関連値

```swift enum NetworkResult { case success(statusCode: Int, data: Data) case failure(error: Error) } if case .success(let code, let data) = result { ... } ``` ラベルによって、値のバインディングの文脈が明確になります。

関連値とRaw Valueの比較

• Raw Value: コンパイル時定数で、すべてのcaseが同じ型を持ち、`rawValue`プロパティでアクセスします • 関連値: 実行時のデータで、caseごとに異なる型を持ち、パターンマッチングで取り出します 同じenumに両方を指定することはできません。

列挙型としてのOptional

Swiftの`Optional`は、文字どおり次のようなenumです。 ```swift enum Optional { case some(Wrapped) case none } ``` すべての`if let`、`switch`、`??`は、この同じ仕組みに基づいて動作します。

Result<Success, Failure>

```swift func fetch() -> Result { ... } switch fetch() { case .success(let data): process(data) case .failure(let err): print(err) } ``` `Result`は、2つの関連値を持つcaseからなる標準ライブラリのenumです。

if caseでのパターンマッチング

```swift let item = Barcode.qrCode("hello") if case .qrCode(let code) = item { print("QR code: \(code)") } ``` `if case`は、1つのcaseだけを対象にする場合に簡潔に書けます。

Guard Case

```swift func process(_ result: NetworkResult) { guard case .success(_, let data) = result else { return } handle(data) } ``` パターンが一致しない場合、`guard case`は早期に処理を抜けます。

コレクション内のenum

```swift let events: [AppEvent] = [.login("alice"), .pageView("/home"), .logout] let logins = events.compactMap { if case .login(let u) = $0 { return u } else { return nil } } ```

クイックチェック

switchのcase内で関連値を取り出すには、どのキーワードを使いますか?

まとめ

重要なポイント: • 関連値を使うと、個々のcaseにデータを付加できます • `switch`、`if case`、`guard case`で取り出します • 明確さのために名前付きラベルを使用します: `.success(code: Int, data: Data)` • `Optional`と`Result`は、関連値を持つ標準ライブラリのenumです • 1つのenumで関連値とraw valueを混在させることはできません 次は、indirect enumと再帰構造です。

よくある質問

「豊富なデータのための関連値」レッスンは無料ですか?

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

「豊富なデータのための関連値」で何を学びますか?

ケースにペイロードを付加し、パターンマッチングで取り出します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「豊富なデータのための関連値」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. Raw ValueとCaseIterable
  2. 豊富なデータのための関連値
  3. Indirect列挙型と再帰的な構造
  4. 列挙型による状態機械のモデル化
← Swift Academyに戻る