0Pricing
Swift Academy · Leçon

Clauses where sur les extensions

Utilisez where sur les extensions de types et de protocoles pour ajouter des API uniquement lorsque les contraintes sont respectées (par exemple, Array where Element: Equatable et Collection where Element == Int ).

Clauses where sur les extensions est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. 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 3 leçons au total.

Pourquoi des extensions contraintes ?

Ajoutez des API uniquement lorsque les types respectent certaines contraintes en utilisant une clause conditionnelle sur les extensions :

  • Extensions de types, par exemple Array
  • Extensions de protocoles, par exemple Collection
  • Contraintes de correspondance exacte, par exemple Element == Int

Extension de type avec contrainte

Ajoutez des méthodes à un tableau uniquement lorsque son Element prend en charge l’égalité. Les tableaux dont les éléments ne la prennent pas en charge ne verront pas ces API.

extension Array where Element: Equatable {
    func removing(_ value: Element) -> [Element] {
        filter { $0 != value }
    }
    func containsAll(_ others: [Element]) -> Bool {
        others.allSatisfy(self.contains)
    }
}
print([1,2,3].removing(2))        // [1,3]
print(["a","b"].containsAll(["b"])) // true

Extension de protocole avec clause conditionnelle

Une extension de protocole ajoute une API à tous les types conformes lorsque la contrainte est respectée, ici toute Collection dont les éléments prennent en charge la comparaison.

extension Collection where Element: Comparable {
    var isSorted: Bool {
        // Pair each element with the next; ensure non-decreasing order
        zip(self, dropFirst()).allSatisfy(<=)
    }
}
print([1,2,3].isSorted)     // true
print([3,1,2].isSorted)     // false

Contraintes de correspondance exacte

Utilisez des contraintes d’égalité pour des API ciblées, par exemple uniquement lorsque Element == Int. Elles n’apparaîtront pas pour les autres types d’éléments.

extension Collection where Element == Int {
    var sum: Int { reduce(0, +) }
    func average() -> Double {
        isEmpty ? 0 : Double(sum) / Double(count)
    }
}
print([1,2,3].sum)          // 6
print([1,2,3].average())    // 2.0

API fondées sur les capacités

Imposez une capacité, par exemple un protocole comme Numeric ou Hashable, afin de composer des assistants puissants et réutilisables.

extension Collection where Element: Numeric {
    var total: Element { reduce(0, +) }
}
extension Sequence where Element: Hashable {
    var uniques: [Element] {
        var seen = Set<Element>()
        return filter { seen.insert($0).inserted }
    }
}
print([1,2,2,3].uniques)    // [1,2,3]
print([1,2,3].total)        // 6

Notes de conception

Conseils :

  • Privilégiez des contraintes minimales pour favoriser la réutilisation.
  • Évitez les extensions qui se chevauchent et définissent le même membre ; cela peut perturber la résolution des surcharges.
  • Documentez les hypothèses (ordre, unicité, domaines numériques).

Objectif des extensions contraintes

Vérification rapide : que permettent les extensions contraintes ?

Récapitulatif

Récapitulatif : utilisez where sur les extensions de types ou de protocoles pour cibler précisément les API, en fonction d'une capacité (: Comparable) ou d'un type exact (== Int), tout en conservant un code sûr et facile à découvrir.

Questions Fréquemment Posées

La leçon « Clauses where sur les extensions » est-elle gratuite ?

Oui — le texte complet de « Clauses where sur les extensions » 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 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Clauses where sur les extensions » ?

Utilisez where sur les extensions de types et de protocoles pour ajouter des API uniquement lorsque les contraintes sont respectées (par exemple, Array where Element: Equatable et Collection where El… 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 3 sur 3.

Combien de temps prend la leçon « Clauses where sur les extensions » ?

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. Conformités conditionnelles
  2. Contraintes récursives et génériques d’ordre supérieur
  3. Clauses where sur les extensions
← Retour à Swift Academy