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"])) // trueExtension 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) // falseContraintes 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.0API 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) // 6Notes 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
- Conformités conditionnelles
- Contraintes récursives et génériques d’ordre supérieur
- Clauses where sur les extensions