Junior — Middle
Jakie właściwości musi mieć obiekt implementujący protokół Hashable, aby można go było używać w tablicach haszujących?
sobes.tech AI
Odpowiedź od AI
Obiekt implementujący protokół Hashable w iOS (Swift) musi posiadać następujące właściwości:
-
Zgodność z protokołem Hashable — obiekt musi zaimplementować metodę
hash(into:), która dodaje wszystkie istotne właściwości do funkcji haszującej. -
Równość (Equatable) — obiekty uznane za równe (za pomocą operatora
==) muszą mieć ten sam hash.
Jest to konieczne, aby obiekt mógł być używany w tablicach haszujących (np. w Set lub jako klucz w Dictionary), gdzie hash określa pozycję elementu, a równość — unikalność.
Przykład implementacji:
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
}
}
Tutaj id jest unikalnym identyfikatorem, według którego określa się hash i równość.