Primäre Associated Types und typisierte Throws
Schränken Sie Protokoll-Existenztypen ein und nutzen Sie die typisierte Fehlerweitergabe in Swift 6.
Primäre Associated Types und typisierte Throws ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. 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 4 Lektionen.
Primäre zugehörige Typen
Mit Swift 5.7 können Sie primäre zugehörige Typen in Protokollen angeben und dadurch eingeschränkte Existenzialtypen ermöglichen.
protocol Container<Element> {
associatedtype Element
var items: [Element] { get }
}
struct Bag<T>: Container { var items: [T] = [] }Eingeschränkte Existenzialtypen
Mit primären zugehörigen Typen können Sie any Container schreiben, um den Existenzialtyp einzugrenzen.
func printItems(_ c: any Container<Int>) {
c.items.forEach { print($0) }
}
printItems(Bag(items: [1,2,3]))Collections mit eingeschränkten Existenzialtypen
Protokolle der Standardbibliothek wie Collection unterstützen jetzt primäre zugehörige Typen.
func first(_ c: any Collection<String>) -> String? {
c.first
}
print(first(["a","b","c"]) ?? "none")Einführung in typisierte Throws
Swift 6 führt typisierte Throws ein, sodass Sie den genauen Fehlertyp deklarieren können, den eine Funktion auslösen darf.
enum NetworkError: Error { case timeout, notFound }
func fetch() throws(NetworkError) -> Data {
throw NetworkError.timeout
}Vollständiges catch mit typisierten Throws
Da der Fehlertyp bekannt ist, kann der Compiler überprüfen, ob alle Fälle vollständig behandelt werden.
do {
let _ = try fetch()
} catch .timeout {
print("Timed out")
} catch .notFound {
print("Not found")
}Typisierte Throws in Protokollen
Protokollanforderungen können einen typisierten Fehler angeben, sodass Konformitäten präzise Fehlertypen bereitstellen können.
protocol Fetchable {
associatedtype Failure: Error
func fetch() throws(Failure) -> Data
}Rethrowing mit typisierten Throws
rethrows funktioniert mit typisierten Throws: Die äußere Funktion gibt den Fehlertyp der inneren Funktion weiter.
func map<T, E: Error>(_ array: [T], transform: (T) throws(E) -> T) throws(E) -> [T] {
try array.map { try transform($0) }
}Primäre zugehörige Typen und typisierte Throws kombinieren
Sie können beide Funktionen gemeinsam für präzise, typsichere APIs verwenden.
protocol Repository<Model> {
associatedtype Model
associatedtype Failure: Error
func fetchAll() throws(Failure) -> [Model]
}Opaque typisierte Throws
throws(any Error) entspricht untypisierten Throws und bietet Ihnen eine Ausweichmöglichkeit.
func riskyOp() throws(any Error) {
// can throw any error
}Migration: von untypisierten zu typisierten Throws
Migrationspfad: Annotieren Sie vorhandene fehlerauslösende Funktionen Schritt für Schritt mit dem konkreten Fehlertyp.
// Before:
func load() throws -> Data { ... }
// After:
func load() throws(NetworkError) -> Data { ... }Typisierte Throws und async
Typisierte Throws lassen sich natürlich mit async kombinieren: async throws(E) ist eine gültige Syntax.
func fetchAsync() async throws(NetworkError) -> Data {
throw NetworkError.notFound
}Schnelltest
Was ermöglichen primäre zugehörige Typen in einem Protokoll?
Zusammenfassung der Lektion
Primäre zugehörige Typen (Swift 5.7) ermöglichen eingeschränkte Existenzialtypen wie any Collection. Typisierte Throws (Swift 6) erlauben die Deklaration genauer Fehlertypen für vollständige catch-Blöcke. Beide Funktionen verbessern die Typsicherheit und die Ausdrucksstärke von APIs.
Häufig gestellte Fragen
Ist die Lektion „Primäre Associated Types und typisierte Throws“ kostenlos?
Ja — der vollständige Text von „Primäre Associated Types und typisierte Throws“ 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 4 Lektionen.
Was lerne ich in „Primäre Associated Types und typisierte Throws“?
Schränken Sie Protokoll-Existenztypen ein und nutzen Sie die typisierte Fehlerweitergabe in Swift 6. 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 4 von 4.
Wie lange dauert die Lektion „Primäre Associated Types und typisierte Throws“?
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
- Generische Einschränkungen und where-Klauseln
- Opaque Types mit dem Schlüsselwort some
- Existenztypen mit any und Type Erasure
- Primäre Associated Types und typisierte Throws