Primære associated types og typed throws
Begræns protokol-existentials, og forstå Swifts 6's typede fejlspridning.
Primære associated types og typed throws er en gratis Swift Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Swift Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Swift Academy-kurset indeholder 4 lektioner i alt.
Primære associerede typer
Swift 5.7 lader dig angive primære associerede typer på protokoller, så du kan bruge begrænsede existentialer.
protocol Container<Element> {
associatedtype Element
var items: [Element] { get }
}
struct Bag<T>: Container { var items: [T] = [] }Begrænsede existentialer
Med primære associerede typer kan du skrive any Container for at begrænse existentialet.
func printItems(_ c: any Container<Int>) {
c.items.forEach { print($0) }
}
printItems(Bag(items: [1,2,3]))Existentialer med samlingsbegrænsninger
Protokoller i standardbiblioteket som Collection understøtter nu primære associerede typer.
func first(_ c: any Collection<String>) -> String? {
c.first
}
print(first(["a","b","c"]) ?? "none")Introduktion til typede fejl
Swift 6 introducerer typede fejl, så du kan angive den præcise fejltype, en funktion kan kaste.
enum NetworkError: Error { case timeout, notFound }
func fetch() throws(NetworkError) -> Data {
throw NetworkError.timeout
}Udtømmende catch med typede fejl
Fordi fejltypen er kendt, kan compileren kontrollere, at alle tilfælde håndteres udtømmende.
do {
let _ = try fetch()
} catch .timeout {
print("Timed out")
} catch .notFound {
print("Not found")
}Typede fejl i protokoller
Protokolkrav kan angive en typet fejl, så typer, der implementerer protokollen, kan levere præcise fejlkategorier.
protocol Fetchable {
associatedtype Failure: Error
func fetch() throws(Failure) -> Data
}Viderekastning med typede fejl
rethrows fungerer med typede fejl: Den ydre funktion viderefører den indre fejltype.
func map<T, E: Error>(_ array: [T], transform: (T) throws(E) -> T) throws(E) -> [T] {
try array.map { try transform($0) }
}Kombination af primære associerede typer og typede fejl
Du kan bruge begge funktioner sammen til præcise API'er med typesikkerhed.
protocol Repository<Model> {
associatedtype Model
associatedtype Failure: Error
func fetchAll() throws(Failure) -> [Model]
}Ubestemte fejltyper
throws(any Error) svarer til fejl uden angivet type og giver dig en fleksibel undtagelsesmulighed.
func riskyOp() throws(any Error) {
// can throw any error
}Migrering fra fejl uden type til typede fejl
Migreringssti: Anmærk eksisterende funktioner, der kan kaste fejl, med den konkrete fejltype trin for trin.
// Before:
func load() throws -> Data { ... }
// After:
func load() throws(NetworkError) -> Data { ... }Typede fejl og async
Typede fejl fungerer naturligt sammen med async: async throws(E) er gyldig syntaks.
func fetchAsync() async throws(NetworkError) -> Data {
throw NetworkError.notFound
}Hurtigt tjek
Hvad muliggør en primær associeret type på en protokol?
Opsummering af lektionen
Primære associerede typer (Swift 5.7) muliggør begrænsede existentialer som any Collection. Typede fejl (Swift 6) lader dig angive præcise fejltyper til udtømmende catch-blokke. Begge funktioner forbedrer typesikkerheden og API'ernes udtrykskraft.
Lær Swift med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 122
- Lektioner
- 409
Ofte stillede spørgsmål
Er lektionen “Primære associated types og typed throws” gratis?
Ja — alle 3 lektioner i læringssporet Swift Academy, inklusive “Primære associated types og typed throws”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Swift Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Primære associated types og typed throws”?
Begræns protokol-existentials, og forstå Swifts 6's typede fejlspridning. Du øver dig i Swift Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Swift Academy?
Der kræves ingen tidligere erfaring. Swift Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Primære associated types og typed throws”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Swift Academy-lektion?
Ja. Alle Swift Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Generiske begrænsninger og where-klausuler
- Opaque-typer med nøgleordet some
- Existentials med any og typeudviskning
- Primære associated types og typed throws