Typy Result — Result<T, Error>
Reprezentujcie powodzenie lub niepowodzenie bez zgłaszania wyjątków za pomocą Result . Twórzcie wyniki, używajcie na nich switch, map/flatMap oraz konwertujcie je na throws i odwrotnie.
Typy Result — Result<T, Error> to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 3 z 3. 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 3 lekcji w sumie.
Po co Result?
Cel: Używaj Result<T, Error>, aby jawnie zwracać sukces lub niepowodzenie — to świetne rozwiązanie dla callbacków i interfejsów API, które nie używają throws.
Tworzenie Result
Twórz .success(value) lub .failure(error) zamiast zgłaszać błędy.
enum ParseError: Error { case badInt }
func parseInt(_ s: String) -> Result<Int, Error> {
if let n = Int(s) { return .success(n) }
else { return .failure(ParseError.badInt) }
}
print(parseInt("42"))
print(parseInt("nope"))Switch na Result
Obsługuj wyniki za pomocą switch, aby zachować przejrzysty podział ścieżek sukcesu i niepowodzenia.
let r = parseInt("10")
switch r {
case .success(let n): print("number =", n)
case .failure(let e): print("error:", e)
}Przekształcanie wartości Result
Przekształcaj sukces za pomocą map, łącz operacje zwracające Result przy użyciu flatMap, a błędy dostosowuj przez mapError.
let r1 = parseInt("5").map { $0 * 2 } // Result<Int, Error>
let r2 = parseInt("x").map { $0 * 2 } // still .failure
let r3 = parseInt("8").flatMap { n in // chain Results
n % 2 == 0 ? .success(n/2) : .failure(ParseError.badInt)
}
let rErr = parseInt("x").mapError { $0 } // transform error type if needed
print(r1, r2, r3, rErr)Throws → Result
Użyj Result { try ... }, aby automatycznie przechwycić wywołanie zgłaszające błąd jako wartość Result.
enum LoadError: Error { case notFound }
func load(text name: String) throws -> String {
guard name == "ok" else { throw LoadError.notFound }
return "loaded"
}
// Build a Result from a throwing call:
let res = Result { try load(text: "ok") } // .success("loaded")
let res2 = Result { try load(text: "missing") } // .failure(LoadError.notFound)
print(res, res2)Result → throws
Wywołaj get(), aby ponownie zgłosić błąd z obiektu Result i powrócić do kodu zgłaszającego błędy.
let outcome = parseInt("12")
do {
let value = try outcome.get() // throws if .failure
print("value =", value)
} catch {
print("thrown from get():", error)
}Znaczenie Result
Szybki test: Co reprezentuje Result<T, Error>?
Podsumowanie
Podsumowanie: Twórz wartości Result, obsługuj je za pomocą switch, przekształcaj przez map/flatMap/mapError i łącz z kodem używającym throws za pomocą inicjalizatora Result { try ... } oraz metody get().
Często zadawane pytania
Czy lekcja „Typy Result — Result<T, Error>” jest bezpłatna?
Tak — pełny tekst „Typy Result — Result<T, Error>” 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 3 lekcji w sumie.
Co nauczysz się w „Typy Result — Result<T, Error>”?
Reprezentujcie powodzenie lub niepowodzenie bez zgłaszania wyjątków za pomocą Result . Twórzcie wyniki, używajcie na nich switch, map/flatMap oraz konwertujcie je na throws i odwrotnie. Ć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 3 z 3.
Ile czasu zajmuje lekcja „Typy Result — Result<T, Error>”?
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
- Łączenie optionali i podstawy obsługi błędów
- do/catch i definiowanie błędów (enums)
- Typy Result — Result