Swift Academy · Leçon

Conformité conditionnelle

Faire conformer conditionnellement des types génériques à des protocoles avec des clauses where.

Leçon 2 sur 412 étapes

Conformité conditionnelle est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Bienvenue

La conformité conditionnelle permet à un type générique de se conformer à un protocole uniquement lorsque son ou ses paramètres de type respectent certaines contraintes. Il s'agit d'un pilier fondamental de l'expressivité du système de types de Swift.

Conformité conditionnelle de 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 ```

Type générique personnalisé

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

Conformité conditionnelle au hachage

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

Conformité conditionnelle à Codable

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

Clauses `where` dans les extensions

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

Contraintes multiples

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

Conformité conditionnelle d’un protocole

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

Utiliser la conformité conditionnelle

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

Avertissement concernant la conformité rétroactive

Swift 5.7+ warns about retroactive conformances (adding conformance to types from another module): ```swift extension String: SomeThirdPartyProtocol {} // ⚠️ retroactive ``` Mark explicitly with `@retroactive` when intentional.

Vérification rapide

Quel mot-clé introduit une condition dans une extension à conformité conditionnelle ?

Récapitulatif

Points essentiels : • `extension T: Protocol where Param: Constraint` — conformité conditionnelle • Les tableaux, `Optional`, `Result`, etc. l’utilisent pour `Equatable`, `Hashable` et `Codable` • Les types génériques personnalisés peuvent faire de même • `where Element == Int` limite la conformité à des types concrets spécifiques • Les conformités rétroactives nécessitent `@retroactive` dans Swift 5.7+ Ensuite : exigences liées à `Self`.
Gratuit pour commencer

Apprends Swift avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
122
Leçons
409

Questions Fréquemment Posées

La leçon « Conformité conditionnelle » est-elle gratuite ?

Oui — le texte complet de « Conformité conditionnelle » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Conformité conditionnelle » ?

Faire conformer conditionnellement des types génériques à des protocoles avec des clauses where. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Conformité conditionnelle » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Composition de protocoles avec &
  2. Conformité conditionnelle
  3. Exigences Self et conception avec Equatable
  4. Principes de conception orientée protocole
← Retour à Swift Academy