Intern
Aká je vaša obľúbená funkcia v Swift?
sobes.tech AI
Odpoveď od AI
Result je typ výčtu. Umožňuje jasnejšie spracovanie úspešného vykonania alebo chyby operácie, čo robí kód bezpečnejším a zrozumiteľnejším.
enum Result<Success, Failure> where Failure : Error {
case success(Success) // Úspešný výsledok s priradenou hodnotou typu Success
case failure(Failure) // Výsledok chyby s priradenou hodnotou typu Failure
}
Výhody používania Result:
- Jasné označenie: Je jasné, že funkcia môže vrátiť buď úspešnú hodnotu, alebo chybu.
- Bezpečnosť: Kompilátor vyžaduje, aby boli spracované obe prípady (
successafailure), čím sa predchádza vynechaniu spracovania chýb. - Lepšia čitateľnosť: Kód používajúci
Resultje ľahšie pochopiteľný, pretože zámer funkcie je zrejmý. - Kompatibilita: Dobre sa integruje s asynchrónnymi operáciami a spracovaním chýb.
Príklad použitia:
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)) // Prenos chyby cez failure
return
}
if let data = data {
completion(.success(data)) // Prenos dát cez success
return
}
// Spracovanie neočakávaných scenárov, ak je potrebné
}.resume()
}
// Použitie funkcie
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { result in
switch result {
case .success(let data):
print("Dáta prijaté: \(data)") // Spracovanie úspechu
case .failure(let error):
print("Chyba pri získavaní dát: \(error.localizedDescription)") // Spracovanie chyby
}
}