Sobes.tech
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 (success e failure), 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
    }
}