Intern
Quelle est votre fonction préférée en Swift?
sobes.tech IA
Réponse de l'IA
Result est un type d'énumération. Il permet de gérer de manière plus explicite la réussite ou l'erreur d'une opération, ce qui rend le code plus sûr et plus compréhensible.
enum Result<Success, Failure> where Failure : Error {
case success(Success) // Résultat réussi avec une valeur associée de type Success
case failure(Failure) // Résultat d'erreur avec une valeur associée de type Failure
}
Avantages de l'utilisation de Result :
- Indication explicite : Il est clair que la fonction peut retourner une valeur réussie ou une erreur.
- Sécurité : Le compilateur oblige à gérer les deux cas (
successetfailure), évitant ainsi d'oublier de traiter les erreurs. - Lisibilité améliorée : Le code utilisant
Resultest plus facile à comprendre, car l'intention de la fonction est évidente. - Compatibilité : S'intègre bien avec les opérations asynchrones et la gestion des erreurs.
Exemple d'utilisation :
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)) // Passage de l'erreur via le cas failure
return
}
if let data = data {
completion(.success(data)) // Passage des données via le cas success
return
}
// Gestion des scénarios inattendus, si nécessaire
}.resume()
}
// Utilisation de la fonction
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { result in
switch result {
case .success(let data):
print("Données reçues : \(data)") // Traitement du résultat réussi
case .failure(let error):
print("Erreur lors de la récupération des données : \(error.localizedDescription)") // Traitement de l'erreur
}
}