Sobes.tech
Middle

Was muss getan werden, damit die Benutzerstruktur zum Schlüssel im Wörterbuch wird?

sobes.tech KI

Antwort von AI

Es ist notwendig, das Protokoll Hashable zu implementieren.

Das Protokoll Hashable erbt von Equatable.

  • Equatable: Erfordert die Implementierung des Gleichheitsoperators == zum Vergleich zweier Instanzen einer Struktur.
  • Hashable: Erfordert die Implementierung der Eigenschaft hash(into:), die den Hash-Wert für eine Instanz der Struktur berechnet.

Beispiel für die Implementierung:

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)
    }
}

// Verwendung in einem Wörterbuch
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 wird zur Generierung des Hash-Werts verwendet. Die Methode combine nimmt verschiedene hashfähige Werte auf und kombiniert sie, um den endgültigen Hash zu erstellen.