Intern
Qual é a sua função favorita em Swift?
sobes.tech IA
Resposta da IA
Result é um tipo de enumeração. Permite lidar de forma mais explícita com o sucesso ou erro de uma operação, tornando o código mais seguro e compreensível.
enum Result<Success, Failure> where Failure : Error {
case success(Success) // Resultado bem-sucedido com valor associado de tipo Success
case failure(Failure) // Resultado de erro com valor associado de tipo Failure
}
Vantagens de usar Result:
- Indicação explícita: É claro que a função pode retornar um valor bem-sucedido ou um erro.
- Segurança: O compilador obriga a tratar ambos os casos (
successefailure), prevenindo omissões no tratamento de erros. - Melhor legibilidade: O código que usa
Resulté mais fácil de entender, pois a intenção da função é clara. - Compatibilidade: Integra-se bem com operações assíncronas e tratamento de erros.
Exemplo 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)) // Passar erro através do caso failure
return
}
if let data = data {
completion(.success(data)) // Passar dados através do caso success
return
}
// Tratamento de cenários inesperados, se necessário
}.resume()
}
// Uso da função
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { result in
switch result {
case .success(let data):
print("Dados recebidos: \(data)") // Tratamento do resultado bem-sucedido
case .failure(let error):
print("Erro ao obter dados: \(error.localizedDescription)") // Tratamento do erro
}
}