Junior — Middle
Quali proprietà deve avere un oggetto che implementa il protocollo Hashable affinché possa essere utilizzato nelle tabelle hash?
sobes.tech AI
Risposta dell'AI
Un oggetto che implementa il protocollo Hashable in iOS (Swift) deve possedere le seguenti proprietà:
-
Conformità al protocollo Hashable — l'oggetto deve implementare il metodo
hash(into:), che aggiunge tutte le proprietà significative per l'hash nella funzione di hash. -
Eguaglianza (Equatable) — gli oggetti considerati uguali (tramite l'operatore
==) devono avere lo stesso hash.
Questo è necessario affinché l'oggetto possa essere utilizzato nelle tabelle hash (ad esempio, in Set o come chiave in Dictionary), dove l'hash determina la posizione dell'elemento e l'uguaglianza determina l'unicità.
Esempio di implementazione:
struct User: Hashable {
var id: Int
var name: String
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
static func == (lhs: User, rhs: User) -> Bool {
return lhs.id == rhs.id
}
}
Qui, id è un identificatore univoco, tramite il quale si determina l'hash e l'uguaglianza.