0Pricing
Swift Academy · Lekcja

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

  1. Łączenie optionali i podstawy obsługi błędów
  2. do/catch i definiowanie błędów (enums)
  3. Typy Result — Result
← Powrót do Swift Academy