Junior — Middle
Jakie ograniczenia i wymagania muszą spełniać obiekty, aby mogły być używane jako elementy tablic haszujących lub struktur haszujących w Swift?
sobes.tech AI
Odpowiedź od AI
W Swift, aby obiekt mógł być używany jako element tabeli haszującej (np. klucz w słowniku lub element zbioru), musi spełniać protokół Hashable.
Wymagania:
- Obiekt musi implementować metodę
hash(into:), która łączy wartości właściwości w celu obliczenia hasza. - Obiekt musi implementować operator równości
==(protokółEquatable), aby poprawnie porównywać elementy.
Przykład:
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: "Иван"))
W związku z tym obiekty muszą mieć stabilny i poprawnie zaimplementowany hash i porównanie, aby poprawnie działały w strukturach hashujących.