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 (
successafailure), čímž se předchází opomenutí zpracování chyb. - Lepší čitelnost: Kód používající
Resultje 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
}
}