Intern
Mis on teie lemmikfunktsioon Swiftis?
sobes.tech AI
Vastus AI-lt
Result tüüpi loend. See võimaldab selgemalt töödelda edukat täitmist või vea operatsiooni, muutes koodi turvalisemaks ja arusaadavamaks.
enum Result<Success, Failure> kus Failure : Error {
juhtum success(Success) // Edukas tulemus koos seotud väärtusega Success
juhtum failure(Failure) // Vea tulemus koos seotud väärtusega Failure
}
Result kasutamise eelised:
- Selge märgistus: On selge, et funktsioon võib tagastada kas edukat väärtust või vea.
- Turvalisus: Kompilaator sunnib töötlema mõlemat juhtumit (
successjafailure), vältides vigade vahelejätmist. - Lugemise parandamine:
Result-i kasutades on kood lihtsam mõista, kuna funktsiooni eesmärk on selge. - Ühilduvus: Hea integreerub asünkrooniliste operatsioonide ja vigade käsitlemisega.
Näide kasutamisest:
func fetchData(from url: URL, completion: @escaping (Result<Data, Error>) -> Void) {
URLSession.shared.dataTask(with: url) { data, response, error in
kui on viga {
completion(.failure(error)) // Vea edastamine failure juhtumi kaudu
tagasi
}
kui on andmed {
completion(.success(data)) // Andmete edastamine success juhtumi kaudu
tagasi
}
// Töötle ootamatuid stsenaariume, kui vaja
}.resume()
}
// Kasutamise näide
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { tulemus in
switch tulemus {
case .success(let data):
print("Saadud andmed: \(data)") // Eduka tulemuse töötlemine
case .failure(let error):
print("Viga andmete saamisel: \(error.localizedDescription)") // Vea töötlemine
}
}