0Pricing
Swift Academy · Lektion

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

  1. Generische Einschränkungen und where-Klauseln
  2. Opaque Types mit dem Schlüsselwort some
  3. Existenztypen mit any und Type Erasure
  4. Primäre Associated Types und typisierte Throws
← Zurück zu Swift Academy