0Pricing
Swift Academy · Lektion

Wann Existenzialtypen (any P) statt Generics verwenden

Wählen Sie zwischen any P (Existenzialtypen) und Generics : heterogene Speicherung und dynamisches Verhalten im Vergleich zu Spezialisierung zur Compile-Zeit und statischen Garantien.

Wann Existenzialtypen (any P) statt Generics verwenden 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.

Existentials vs. Generics

Existentials (any P) speichern Werte eines unbekannten konkreten Typs, die einem Protokoll entsprechen. Generics (<T: P>) bewahren den konkreten Typ zur Compile-Zeit für Spezialisierungen.

Protokolle einrichten

Protokolle ohne zugehörige Typen lassen sich einfach als any P-Existentials und als Einschränkungen für Generics verwenden.

protocol Animal {
    func speak() -> String
}
struct Dog: Animal { func speak() -> String { "woof" } }
struct Cat: Animal { func speak() -> String { "meow" } }

Heterogene Arrays

Verwenden Sie [any Animal], um verschiedene konforme Typen gemeinsam zu speichern und nur die API des Protokolls aufzurufen.

let zoo: [any Animal] = [Dog(), Cat()]   // heterogeneous array
for a in zoo { print(a.speak()) }              // "woof", "meow"

Spezialisierung durch Generics

Generics bewahren den konkreten Typ (T) und ermöglichen dadurch mehr Optimierungen sowie stärkere Prüfungen zur Compile-Zeit.

// Generic version — compiler specializes for each concrete type
func shout<T: Animal>(_ a: T) {
    // Can inline/specialize based on concrete T
    print(a.speak().uppercased())
}
shout(Dog()) // WOOF
shout(Cat()) // MEOW

Einschränkungen von PATs

Protokolle mit zugehörigen Typen eignen sich nicht gut als einfache Existentials, wenn Sie den zugehörigen Typ benötigen. Bevorzugen Sie Generics oder Type Erasure (z. B. AnySequence).

protocol Container {
    associatedtype Item
    func get(_ i: Int) -> Item
}
// Storing as `any Container` loses the concrete Item.
// You can't use Item directly without additional constraints or type erasure.

Welche Option Sie wählen sollten

Wählen Sie:

  • any P, wenn Sie eine heterogene Speicherung oder dynamisches Verhalten ausschließlich über die Protokoll-API benötigen.
  • Generics, wenn Sie statische Typen, bessere Optimierung oder Beziehungen zwischen mehreren Typen benötigen (z. B. dasselbe Item).
  • Verwenden Sie bei PATs, bei denen Item relevant ist, Generics oder ergänzen Sie eine Type Erasure.

any P vs. Generics

Kurztest: Wann wird any P bevorzugt?

Zusammenfassung

Zusammenfassung: Verwenden Sie any P für gemischte konforme Typen und dynamisches Verhalten; verwenden Sie Generics für Spezialisierungen zur Compile-Zeit sowie dann, wenn zugehörige Typen oder Beziehungen relevant sind.

Häufig gestellte Fragen

Ist die Lektion „Wann Existenzialtypen (any P) statt Generics verwenden“ kostenlos?

Ja — der vollständige Text von „Wann Existenzialtypen (any P) statt Generics verwenden“ 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 „Wann Existenzialtypen (any P) statt Generics verwenden“?

Wählen Sie zwischen any P (Existenzialtypen) und Generics : heterogene Speicherung und dynamisches Verhalten im Vergleich zu Spezialisierung zur Compile-Zeit und statischen Garantien. 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 „Wann Existenzialtypen (any P) statt Generics verwenden“?

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. associatedtype und generische Protokolle
  2. Muster zur Typlöschung (AnySequence/AnyIterator)
  3. Wann Existenzialtypen (any P) statt Generics verwenden
← Zurück zu Swift Academy