Sobes.tech
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:

  1. Zgodność z protokołem Hashable — obiekt musi zaimplementować metodę hash(into:), która dodaje wszystkie istotne właściwości do funkcji haszującej.

  2. 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ść.