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

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

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