Junior — Middle
Quali restrizioni e requisiti devono avere gli oggetti per poter essere utilizzati come elementi in tabelle hash o strutture hash in Swift?
sobes.tech AI
Risposta dell'AI
In Swift, affinché un oggetto possa essere utilizzato come elemento in una tabella hash (ad esempio, come chiave in un dizionario o elemento di un insieme), deve conformarsi al protocollo Hashable.
Requisiti:
- L'oggetto deve implementare il metodo
hash(into:), che combina i valori delle proprietà per calcolare l'hash. - L'oggetto deve implementare l'operatore di uguaglianza
==(protocolloEquatable) per confrontare correttamente gli elementi.
Esempio:
struct Person: Hashable {
var id: Int
var name: String
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.id == rhs.id
}
}
var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))
Pertanto, gli oggetti devono avere un hash e un confronto stabili e correttamente implementati per funzionare correttamente nelle strutture hash.