Intern
Qual è la tua funzione preferita in Swift?
sobes.tech AI
Risposta dell'AI
Result è un tipo di enumerazione. Permette di gestire in modo più esplicito il successo o l'errore di un'operazione, rendendo il codice più sicuro e comprensibile.
enum Result<Success, Failure> where Failure : Error {
case success(Success) // Risultato di successo con valore associato di tipo Success
case failure(Failure) // Risultato di errore con valore associato di tipo Failure
}
Vantaggi dell'uso di Result:
- Indicazione esplicita: È chiaro che la funzione può restituire un valore di successo o un errore.
- Sicurezza: Il compilatore obbliga a gestire entrambi i casi (
successefailure), prevenendo omissioni. - Migliore leggibilità: Il codice che utilizza
Resultè più facile da capire, poiché l'intento della funzione è evidente. - Compatibilità: Si integra bene con operazioni asincrone e gestione degli errori.
Esempio di utilizzo:
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)) // Passare errore tramite failure
return
}
if let data = data {
completion(.success(data)) // Passare dati tramite success
return
}
// Gestione scenari imprevisti, se necessario
}.resume()
}
// Uso della funzione
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { result in
switch result {
case .success(let data):
print("Dati ricevuti: \(data)") // Gestione successo
case .failure(let error):
print("Errore nel recupero dati: \(error.localizedDescription)") // Gestione errore
}
}