Sobes.tech
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:

  1. 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.

  2. 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ť.