Sobes.tech
Junior — Middle

Quelles propriétés un objet doit-il avoir pour implémenter le protocole Hashable afin de pouvoir l'utiliser dans des tables de hachage?

sobes.tech IA

Réponse de l'IA

Un objet qui implémente le protocole Hashable en iOS (Swift) doit posséder les propriétés suivantes :

  1. Conformité au protocole Hashable — l'objet doit implémenter la méthode hash(into:), qui ajoute toutes les propriétés significatives pour le hachage dans la fonction de hachage.

  2. Équivalence (Equatable) — les objets considérés comme égaux (via l'opérateur ==) doivent avoir le même hash.

Cela est nécessaire pour que l'objet puisse être utilisé dans des tables de hachage (par exemple, dans Set ou comme clé dans un Dictionary), où le hash détermine la position de l'élément, et l'égalité l'unicité.

Exemple d'implémentation :

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
    }
}

Ici, id est un identifiant unique, par lequel le hash et l'égalité sont déterminés.