Intern
Care este funcția ta preferată în Swift?
sobes.tech AI
Răspuns de la AI
Result un tip de enumerare. Permite gestionarea mai explicită a succesului sau a erorii unei operații, ceea ce face ca codul să fie mai sigur și mai ușor de înțeles.
enum Result<Success, Failure> where Failure : Error {
case success(Success) // Rezultat de succes cu valoare asociată de tip Success
case failure(Failure) // Rezultat de eroare cu valoare asociată de tip Failure
}
Avantajele utilizării Result:
- Indicare explicită: Este clar că funcția poate returna fie o valoare de succes, fie o eroare.
- Siguranță: Compilatorul forțează tratarea ambelor cazuri (
successșifailure), prevenind omisiunile în gestionarea erorilor. - Citibilitate îmbunătățită: Codul care folosește
Resulteste mai ușor de înțeles, deoarece intenția funcției este clară. - Compatibilitate: Se integrează bine cu operațiuni asincrone și gestionarea erorilor.
Exemplu de utilizare:
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)) // Transmiterea erorii prin failure
return
}
if let data = data {
completion(.success(data)) // Transmiterea datelor prin success
return
}
// Tratarea scenariilor neașteptate, dacă este necesar
}.resume()
}
// Utilizarea funcției
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { result in
switch result {
case .success(let data):
print("Date primite: \(data)") // Tratarea cu succes
case .failure(let error):
print("Eroare la preluarea datelor: \(error.localizedDescription)") // Tratarea erorii
}
}