Junior — Middle
Quais propriedades um objeto que implementa o protocolo Hashable deve ter para que possa ser usado em tabelas de hash?
sobes.tech IA
Resposta da IA
Um objeto que implementa o protocolo Hashable no iOS (Swift) deve possuir as seguintes propriedades:
-
Conformidade ao protocolo Hashable — o objeto deve implementar o método
hash(into:), que adiciona todas as propriedades relevantes para o hash na função de hash. -
Equivalência (Equatable) — objetos considerados iguais (através do operador
==) devem ter o mesmo hash.
Isso é necessário para que o objeto possa ser usado em tabelas hash (por exemplo, em Set ou como chave em Dictionary), onde o hash determina a posição do elemento, e a igualdade determina a unicidade.
Exemplo de implementação:
struct User: Hashable {
var id: Int
var name: String
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
static func == (lhs: User, rhs: User) -> Bool {
return lhs.id == rhs.id
}
}
Aqui, id é um identificador único, pelo qual se determina o hash e a igualdade.