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:
-
Conformitatea la protocolul Hashable — obiectul trebuie să implementeze metoda
hash(into:), care adaugă toate proprietățile relevante pentru hash în funcția de hash. -
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.