Junior — Middle
Aké vlastnosti musí mať objekt implementujúci protokol Hashable, aby ho bolo možné použiť v hash tabuľkách?
sobes.tech AI
Odpoveď od AI
Objekt, ktorý implementuje protokol Hashable v iOS (Swift), musí mať nasledovné vlastnosti:
-
Soulad s protokolom Hashable — objekt musí implementovať metódu
hash(into:), ktorá pridáva všetky dôležité vlastnosti pre hashovanie do hashovacej funkcie. -
Ekvivalentnosť (Equatable) — objekty považované za rovnaké (pomocou operátora
==) musia mať rovnaký hash.
Toto je nevyhnutné, aby bolo možné objekt použiť v hashovacích tabuľkách (napríklad v Set alebo ako kľúč v Dictionary), kde hash určuje pozíciu prvku a rovnosť zabezpečuje jedinečnosť.
Príklad implementácie:
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
}
}
Tu je id jedinečný identifikátor, podľa ktorého sa určuje hash a rovnosť.