Sobes.tech
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 (success a failure), čím sa predchádza vynechaniu spracovania chýb.
  • Lepšia čitateľnosť: Kód používajúci Result je ľ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
    }
}