Middle
Ce trebuie făcut pentru ca structura utilizatorului să devină o cheie în dicționar?
sobes.tech AI
Răspuns de la AI
Este necesar să implementați protocolul Hashable.
Protocolul Hashable moștenește de la Equatable.
Equatable: Necesită implementarea operatorului de egalitate==pentru compararea a două instanțe ale unei structuri.Hashable: Necesită implementarea proprietățiihash(into:), care calculează valoarea hash pentru o instanță a structurii.
Exemplu de implementare:
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)
}
}
// Utilizare într-un dicționar
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 este folosit pentru generarea valorii hash. Metoda combine acceptă diferite valori hashabile și le combină pentru a crea hash-ul final.