Sobes.tech
Junior — Middle

Quelles sont les restrictions et exigences pour que les objets puissent être utilisés comme éléments dans des tables de hachage ou des structures de hachage en Swift?

sobes.tech IA

Réponse de l'IA

En Swift, pour qu’un objet puisse être utilisé comme élément dans une table de hachage (par exemple, comme clé dans un dictionnaire ou élément d’un ensemble), il doit conformer au protocole Hashable.

Exigences :

  • L’objet doit implémenter la méthode hash(into:), qui combine les valeurs des propriétés pour calculer le hash.
  • L’objet doit implémenter l’opérateur d’égalité == (protocole Equatable) pour comparer correctement les éléments.

Exemple :

struct Person: Hashable {
    var id: Int
    var name: String

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }

    static func == (lhs: Person, rhs: Person) -> Bool {
        return lhs.id == rhs.id
    }
}

var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))

Ainsi, les objets doivent avoir un hash et une comparaison stables et correctement implémentés pour fonctionner correctement dans des structures de hachage.