Sobes.tech
Junior — Middle

Kādas īpašības jābūt objektam, kas īsteno Hashable protokolu, lai to varētu izmantot hash tabulās?

sobes.tech AI

Atbilde no AI

Objekts, kas īsteno protokolu Hashable iOS (Swift), jābūt šādām īpašībām:

  1. Atbilstība protokolam Hashable — objekts jāīsteno metodei hash(into:), kas pievieno visas nozīmīgās īpašības hash funkcijai.

  2. Ekvivalence (Equatable) — objekti, kas uzskatāmi par vienādiem (izmantojot operatoru ==), jābūt vienādām hash vērtībām.

Tas ir nepieciešams, lai objekts varētu tikt izmantots hash tabulās (piemēram, Set vai kā atslēga Dictionary), kur hash nosaka elementa pozīciju, bet vienādība — unikālu identitāti.

Īstenošanas piemērs:

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
    }
}

Šeit id ir unikāls identifikators, pēc kura tiek noteikts hash un vienādība.