Sobes.tech
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:

  1. 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.

  2. 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.