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é
==(protocoleEquatable) 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.