0Pricing
Swift Academy · Lezione

Valori associati per dati complessi

Associare payload ai casi ed estrarli con il pattern matching.

Valori associati per dati complessi è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Benvenuto

I valori associati consentono a ogni case di un enum di contenere dati aggiuntivi. Trasformano gli enum in potenti unioni discriminate, alla base della modellazione type-safe dello stato in Swift.

Definizione dei valori associati

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

Estrazione con switch

```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)") } ``` In alternativa, usi `case let` per associare tutti i valori in una volta: ```swift case let .upc(n,m,p,c): ... ```

Valori associati denominati

```swift enum NetworkResult { case success(statusCode: Int, data: Data) case failure(error: Error) } if case .success(let code, let data) = result { ... } ``` Le etichette rendono chiaro il contesto dell'associazione.

Valori associati e valori raw

• Valori raw: costanti a compile time, stesso tipo per tutti i casi, proprietà `rawValue` • Valori associati: dati disponibili a runtime, ogni caso ha il proprio tipo, estratti tramite pattern matching Non è possibile avere entrambi nello stesso enum.

Optional come enum

L'`Optional` di Swift è letteralmente: ```swift enum Optional { case some(Wrapped) case none } ``` Ogni `if let`, `switch` e `??` opera sullo stesso meccanismo.

Result<Success, Failure>

```swift func fetch() -> Result { ... } switch fetch() { case .success(let data): process(data) case .failure(let err): print(err) } ``` `Result` è un enum della libreria standard con due casi che contengono valori associati.

Pattern matching con if case

```swift let item = Barcode.qrCode("hello") if case .qrCode(let code) = item { print("QR code: \(code)") } ``` `if case` è conciso quando interessa un solo caso.

Guard case

```swift func process(_ result: NetworkResult) { guard case .success(_, let data) = result else { return } handle(data) } ``` `guard case` esce in anticipo se il pattern non corrisponde.

Enum nelle collezioni

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

Verifica rapida

Quale parola chiave si usa per estrarre i valori associati all'interno di un caso di switch?

Riepilogo

Concetti chiave: • I valori associati collegano dati a singoli casi • Si estraggono con `switch`, `if case` o `guard case` • Si usano etichette denominate per maggiore chiarezza: `.success(code: Int, data: Data)` • `Optional` e `Result` sono enum della libreria standard con valori associati • Non è possibile combinare valori associati e valori raw nello stesso enum Prossimo argomento: enum indirect e strutture ricorsive.

Domande Frequenti

La lezione «Valori associati per dati complessi» è gratuita?

Sì — il testo completo di «Valori associati per dati complessi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «Valori associati per dati complessi»?

Associare payload ai casi ed estrarli con il pattern matching. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Valori associati per dati complessi»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Valori grezzi e CaseIterable
  2. Valori associati per dati complessi
  3. Enum indirect e strutture ricorsive
  4. Modellare macchine a stati con gli enum
← Torna a Swift Academy