Junior — Middle
Millised omadused peab omama objekt, mis rakendab Hashable protokolli, et seda saaks kasutada hash-tabelites?
sobes.tech AI
Vastus AI-lt
Objekt, ktorý implementuje protokol Hashable v iOS (Swift), musí mať nasledujúce vlastnosti:
-
Zhodu s protokolom Hashable — objekt musí implementovať metódu
hash(into:), ktorá pridáva všetky dôležité vlastnosti pre hashovanie do hashovacej funkcie. -
Ekvivalenciu (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ť.