Sobes.tech
Intern

Jaká je vaše oblíbená funkce ve Swiftu?

sobes.tech AI

Odpověď od AI

Result je typ výčtu. Umožňuje jasnější zpracování úspěšného dokončení nebo chyby operace, což činí kód bezpečnějším a srozumitelnějším.

enum Result<Success, Failure> where Failure : Error {
    case success(Success) // Úspěšný výsledek s přiřazenou hodnotou typu Success
    case failure(Failure) // Výsledek chyby s přiřazenou hodnotou typu Failure
}

Výhody používání Result:

  • Explicitní označení: Je jasné, že funkce může vrátit buď úspěšnou hodnotu, nebo chybu.
  • Bezpečnost: Kompilátor nutí obsloužit oba případy (success a failure), čímž se předchází opomenutí zpracování chyb.
  • Lepší čitelnost: Kód používající Result je snazší pochopit, protože záměr funkce je zřejmý.
  • Kompatibilita: Dobře se integruje s asynchronními operacemi a zpracováním chyb.

Příklad použití:

func fetchData(from url: URL, completion: @escaping (Result<Data, Error>) -> Void) {
    URLSession.shared.dataTask(with: url) { data, response, error in
        if let error = error {
            completion(.failure(error)) // Přenos chyby přes failure
            return
        }
        if let data = data {
            completion(.success(data)) // Přenos dat přes success
            return
        }
        // Zpracování neočekávaných scénářů, pokud je potřeba
    }.resume()
}

// Použití funkce
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { result in
    switch result {
    case .success(let data):
        print("Data přijata: \(data)") // Zpracování úspěchu
    case .failure(let error):
        print("Chyba při získávání dat: \(error.localizedDescription)") // Zpracování chyby
    }
}