0Pricing
Swift Academy · Lektion

where-Klauseln für Extensions

Verwenden Sie where in Typ - und Protokoll -Extensions, um APIs nur bei erfüllten Einschränkungen hinzuzufügen (z. B. Array where Element: Equatable , Collection where Element == Int ).

where-Klauseln für Extensions ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.

Warum Extensions mit Constraints?

Fügen Sie APIs mithilfe von where in Extensions nur dann hinzu, wenn Typen die Constraints erfüllen:

  • Typerweiterungen, zum Beispiel Array
  • Protokollerweiterungen, zum Beispiel Collection
  • Constraints mit exakter Übereinstimmung, zum Beispiel Element == Int

Typerweiterung mit Constraint

Fügen Sie Methoden nur dann zu Array hinzu, wenn sein Element Equatable ist. Arrays mit nicht-Equatable-Elementen können nicht auf diese APIs zugreifen.

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

Protokollerweiterung mit where

Eine Protokollerweiterung stellt eine API für alle konformen Typen bereit, sobald der Constraint erfüllt ist, hier also für jede Collection mit Comparable-Elementen.

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

Constraints mit exakter Übereinstimmung

Verwenden Sie Gleichheits-Constraints für gezielte APIs, zum Beispiel nur dann, wenn Element == Int gilt. Für andere Elementtypen werden diese APIs nicht angeboten.

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

Capability-basierte APIs

Beschränken Sie APIs auf eine Capability, etwa Protokolle wie Numeric oder Hashable, um leistungsfähige und wiederverwendbare Hilfsfunktionen zu kombinieren.

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

Designhinweise

Tipps:

  • Bevorzugen Sie möglichst wenige Einschränkungen für eine breitere Wiederverwendung.
  • Vermeiden Sie sich überschneidende Erweiterungen, die dasselbe Member definieren; das kann die Überladungsauflösung verwirren.
  • Dokumentieren Sie Annahmen (Reihenfolge, Eindeutigkeit, numerische Wertebereiche).

Zweck eingeschränkter Erweiterungen

Kurztest: Was ermöglichen eingeschränkte Erweiterungen?

Zusammenfassung

Zusammenfassung: Verwenden Sie where in Typ- und Protokollerweiterungen, um APIs präzise anzusprechen – anhand einer Fähigkeit (: Comparable) oder eines exakten Typs (== Int) – und den Code sicher und übersichtlich zu halten.

Häufig gestellte Fragen

Ist die Lektion „where-Klauseln für Extensions“ kostenlos?

Ja — der vollständige Text von „where-Klauseln für Extensions“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „where-Klauseln für Extensions“?

Verwenden Sie where in Typ - und Protokoll -Extensions, um APIs nur bei erfüllten Einschränkungen hinzuzufügen (z. B. Array where Element: Equatable , Collection where Element == Int ). Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.

Wie lange dauert die Lektion „where-Klauseln für Extensions“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Bedingte Konformitäten
  2. Rekursive Constraints und Generics höherer Ordnung
  3. where-Klauseln für Extensions
← Zurück zu Swift Academy