Middle
Que doit-on faire pour que la structure utilisateur devienne une clé dans le dictionnaire?
sobes.tech IA
Réponse de l'IA
Il est nécessaire d'implémenter le protocole Hashable.
Le protocole Hashable hérite de Equatable.
Equatable: Nécessite la mise en œuvre de l'opérateur d'égalité==pour comparer deux instances d'une structure.Hashable: Nécessite la mise en œuvre de la propriétéhash(into:), qui calcule la valeur de hachage pour une instance de la structure.
Exemple d'implémentation :
struct Coordinate: Hashable {
let x: Int
let y: Int
// MARK: - Equatable
static func == (lhs: Coordinate, rhs: Coordinate) -> Bool {
return lhs.x == rhs.x && lhs.y == rhs.y
}
// MARK: - Hashable
func hash(into hasher: inout Hasher) {
hasher.combine(x)
hasher.combine(y)
}
}
// Utilisation dans un dictionnaire
let coordinatesDictionary: [Coordinate: String] = [
Coordinate(x: 0, y: 0): "Origin",
Coordinate(x: 1, y: 1): "Point (1,1)"
]
print(coordinatesDictionary[Coordinate(x: 0, y: 0)]!)
Hasher est utilisé pour générer la valeur de hachage. La méthode combine accepte différentes valeurs hashables et les combine pour créer le hachage final.