Sobes.tech
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.