0Pricing
Swift Academy · Lezione

Conformità condizionale

Fare in modo che i tipi generici adottino condizionalmente i protocolli usando clausole where.

Conformità condizionale è 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.

Introduzione

La conformità condizionale consente a un tipo generico di conformarsi a un protocollo solo quando i relativi parametri di tipo soddisfano determinati vincoli. È un elemento fondamentale dell'espressività del sistema dei tipi di Swift.

Conformità condizionale di base

```swift extension Array: Equatable where Element: Equatable { // Array is Equatable only when Element is Equatable } let a = [1,2,3] let b = [1,2,3] print(a == b) // true — works because Int is Equatable ```

Tipo generico personalizzato

```swift struct Box { var value: T } extension Box: Equatable where T: Equatable { static func == (lhs: Box, rhs: Box) -> Bool { lhs.value == rhs.value } } print(Box(value: 42) == Box(value: 42)) // true ```

Hashable condizionale

```swift extension Box: Hashable where T: Hashable { func hash(into hasher: inout Hasher) { hasher.combine(value) } } // Box is Hashable; Box is not ```

Codable condizionale

```swift extension Box: Codable where T: Codable {} let box = Box(value: "hello") let data = try JSONEncoder().encode(box) // works — String is Codable ```

Clausole where nelle estensioni

```swift extension Collection where Element == Int { var sum: Int { reduce(0, +) } } print([1,2,3,4].sum) // 10 // This extension only applies to collections of Int ```

Vincoli multipli

```swift extension Dictionary where Key: Comparable, Value: Equatable { func sortedByKey() -> [(Key, Value)] { sorted { $0.key < $1.key } } } ```

Conformità condizionale dei protocolli

```swift protocol Printable { func prettyPrint() } extension Optional: Printable where Wrapped: Printable { func prettyPrint() { switch self { case .none: print("nil") case .some(let v): v.prettyPrint() } } } ```

Uso della conformità condizionale

```swift let opt: Int? = 42 // If Int conformed to Printable: // opt.prettyPrint() // "42" // Standard usage: let nums = Optional([1,2,3]) // [1,2,3]? if let arr = nums, arr == [1,2,3] { ... } // Equatable via conditional ```

Avviso sulle conformità retroattive

Swift 5.7+ segnala le conformità retroattive (l'aggiunta della conformità a tipi appartenenti a un altro modulo): ```swift extension String: SomeThirdPartyProtocol {} // ⚠️ retroactive ``` Contrassegni esplicitamente la conformità con `@retroactive` quando è intenzionale.

Verifica rapida

Quale parola chiave introduce una condizione in un'estensione con conformità condizionale?

Riepilogo

Punti chiave: • `extension T: Protocol where Param: Constraint` — conformità condizionale • Arrays, Optional, Result ecc. usano questa funzionalità per Equatable, Hashable e Codable • Anche i tipi generici personalizzati possono fare lo stesso • `where Element == Int` limita la conformità a specifici tipi concreti • Le conformità retroattive richiedono `@retroactive` in Swift 5.7+ Successivo: requisiti di Self.

Domande Frequenti

La lezione «Conformità condizionale» è gratuita?

Sì — il testo completo di «Conformità condizionale» è 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 «Conformità condizionale»?

Fare in modo che i tipi generici adottino condizionalmente i protocolli usando clausole where. 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 «Conformità condizionale»?

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. Composizione di protocolli con &
  2. Conformità condizionale
  3. Requisiti Self e progettazione Equatable
  4. Principi della progettazione orientata ai protocolli
← Torna a Swift Academy