Intern
¿Cuál es tu función favorita en Swift?
sobes.tech AI
Respuesta de la IA
Result es un tipo de enumeración. Permite manejar de manera más explícita la ejecución exitosa o el error de una operación, lo que hace que el código sea más seguro y comprensible.
enum Result<Success, Failure> where Failure : Error {
case success(Success) // Resultado exitoso con valor asociado de tipo Success
case failure(Failure) // Resultado de error con valor asociado de tipo Failure
}
Ventajas de usar Result:
- Indicación explícita: Es claro que la función puede devolver un valor exitoso o un error.
- Seguridad: El compilador obliga a manejar ambos casos (
successyfailure), previniendo omisiones en el manejo de errores. - Mejor legibilidad: El código que usa
Resultes más fácil de entender, ya que la intención de la función es clara. - Compatibilidad: Se integra bien con operaciones asíncronas y manejo de errores.
Ejemplo de uso:
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)) // Pasar error a través del caso failure
return
}
if let data = data {
completion(.success(data)) // Pasar datos a través del caso success
return
}
// Manejar escenarios inesperados, si es necesario
}.resume()
}
// Uso de la función
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { result in
switch result {
case .success(let data):
print("Datos recibidos: \(data)") // Manejar resultado exitoso
case .failure(let error):
print("Error al obtener datos: \(error.localizedDescription)") // Manejar error
}
}