Junior — Middle
Ce restricții și cerințe există pentru ca obiectele să poată fi utilizate ca elemente în tabele hash sau structuri hash în Swift?
sobes.tech AI
Răspuns de la AI
În Swift, pentru ca un obiect să poată fi utilizat ca element într-un tabel hash (de exemplu, ca cheie într-un dicționar sau element într-un set), trebuie să respecte protocolul Hashable.
Cerinte:
- Obiectul trebuie să implementeze metoda
hash(into:), care combină valorile proprietăților pentru a calcula hash-ul. - Obiectul trebuie să implementeze operatorul de egalitate
==(protocolulEquatable) pentru a compara corect elementele.
Exemplu:
struct Person: Hashable {
var id: Int
var name: String
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.id == rhs.id
}
}
var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))
Prin urmare, obiectele trebuie să aibă un hash și o comparație stabile și corect implementate pentru a funcționa corect în structurile hash.