Que doit-on assurer pour utiliser un objet de classe comme clé dans un dictionnaire?
sobes.tech IA
Réponse de l'IA
Pour utiliser un objet de classe comme clé dans un dictionnaire (par exemple, dans Swift Dictionary ou NSDictionary), il est nécessaire de garantir :
-
Hashabilité — l'objet doit avoir une méthode de hachage correctement implémentée (
hashen Swift,hashValueen Objective-C), afin que le dictionnaire puisse trouver la clé rapidement. -
Comparabilité pour l'égalité — l'objet doit implémenter correctement la méthode de comparaison (
Equatableen Swift,isEqual:en Objective-C), pour que le dictionnaire puisse déterminer si deux clés sont égales.
En Swift, cela signifie que la classe doit respecter les protocoles Hashable et Equatable. Par exemple :
class Person: Hashable {
var id: Int
var name: String
init(id: Int, name: String) {
self.id = id
self.name = name
}
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.id == rhs.id
}
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
}
var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"
Sans une implémentation correcte de ces méthodes, l'objet ne pourra pas être utilisé comme clé dans un dictionnaire.