Główne typy powiązane i typowane błędy
Ograniczanie existentiali protokołów i propagacja typowanych błędów w Swift 6.
Główne typy powiązane i typowane błędy to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
Podstawowe typy skojarzone
Swift 5.7 pozwala określać podstawowe typy skojarzone w protokołach, umożliwiając stosowanie ograniczonych typów egzystencjalnych.
protocol Container<Element> {
associatedtype Element
var items: [Element] { get }
}
struct Bag<T>: Container { var items: [T] = [] }Ograniczone typy egzystencjalne
Dzięki podstawowym typom skojarzonym można zapisać any Container, aby zawęzić typ egzystencjalny.
func printItems(_ c: any Container<Int>) {
c.items.forEach { print($0) }
}
printItems(Bag(items: [1,2,3]))Typy egzystencjalne ograniczone do Collection
Protokoły biblioteki standardowej, takie jak Collection, obsługują teraz podstawowe typy skojarzone.
func first(_ c: any Collection<String>) -> String? {
c.first
}
print(first(["a","b","c"]) ?? "none")Wprowadzenie do typed throws
Swift 6 wprowadza typed throws, dzięki czemu można zadeklarować dokładny typ błędu, który funkcja może zgłosić.
enum NetworkError: Error { case timeout, notFound }
func fetch() throws(NetworkError) -> Data {
throw NetworkError.timeout
}Pełna obsługa catch z typed throws
Ponieważ typ błędu jest znany, kompilator może sprawdzić, czy wszystkie przypadki zostały obsłużone wyczerpująco.
do {
let _ = try fetch()
} catch .timeout {
print("Timed out")
} catch .notFound {
print("Not found")
}Typed throws w protokołach
Wymagania protokołu mogą określać typ zgłaszanego błędu, pozwalając typom spełniającym wymagania podawać precyzyjne typy błędów.
protocol Fetchable {
associatedtype Failure: Error
func fetch() throws(Failure) -> Data
}Ponowne zgłaszanie błędów z typed throws
rethrows działa z typed throws: funkcja zewnętrzna przekazuje typ błędu funkcji wewnętrznej.
func map<T, E: Error>(_ array: [T], transform: (T) throws(E) -> T) throws(E) -> [T] {
try array.map { try transform($0) }
}Łączenie primary associated types z typed throws
Obie funkcje można stosować razem, aby tworzyć precyzyjne interfejsy API bezpieczne typowo.
protocol Repository<Model> {
associatedtype Model
associatedtype Failure: Error
func fetchAll() throws(Failure) -> [Model]
}Nieokreślone typed throws
throws(any Error) jest odpowiednikiem nieokreślonego throws i zapewnia możliwość obejścia ograniczeń typowania.
func riskyOp() throws(any Error) {
// can throw any error
}Migracja: z untyped do typed throws
Ścieżka migracji: krok po kroku dodawać do istniejących funkcji zgłaszających błędy adnotację z konkretnym typem błędu.
// Before:
func load() throws -> Data { ... }
// After:
func load() throws(NetworkError) -> Data { ... }Typed throws i async
Typed throws naturalnie łączy się z async: składnia async throws(E) jest prawidłowa.
func fetchAsync() async throws(NetworkError) -> Data {
throw NetworkError.notFound
}Szybkie sprawdzenie
Co umożliwia podstawowy typ skojarzony w protokole?
Podsumowanie lekcji
Podstawowe typy skojarzone (Swift 5.7) umożliwiają stosowanie ograniczonych typów egzystencjalnych, takich jak any Collection. Typed throws (Swift 6) pozwala deklarować dokładne typy błędów na potrzeby wyczerpujących bloków catch. Obie funkcje zwiększają bezpieczeństwo typów i wyrażistość interfejsów API.
Ucz się Swift dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 122
- Lekcje
- 409
Często zadawane pytania
Czy lekcja „Główne typy powiązane i typowane błędy” jest bezpłatna?
Tak — pełny tekst „Główne typy powiązane i typowane błędy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Główne typy powiązane i typowane błędy”?
Ograniczanie existentiali protokołów i propagacja typowanych błędów w Swift 6. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Główne typy powiązane i typowane błędy”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Ograniczenia generyczne i klauzule where
- Typy niejawne ze słowem kluczowym some
- Existentials z any i wymazywanie typu
- Główne typy powiązane i typowane błędy