Sobes.tech
Junior — Middle

Ce proprietăți trebuie să aibă un obiect care implementează protocolul Hashable pentru a putea fi utilizat în tabelele hash?

sobes.tech AI

Răspuns de la AI

Un obiect care implementează protocolul Hashable în iOS (Swift) trebuie să aibă următoarele proprietăți:

  1. Conformitatea la protocolul Hashable — obiectul trebuie să implementeze metoda hash(into:), care adaugă toate proprietățile relevante pentru hash în funcția de hash.

  2. Echivalență (Equatable) — obiectele considerate egale (prin operatorul ==) trebuie să aibă același hash.

Acest lucru este necesar pentru ca obiectul să poată fi utilizat în tabele hash (de exemplu, în Set sau ca cheie în Dictionary), unde hash-ul determină poziția elementului, iar egalitatea asigură unicitatea.

Exemplu de implementare:

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

Aici, id este un identificator unic, după care se determină hash-ul și egalitatea.