Sobes.tech
Junior — Middle

Jakie warunki i cechy muszą mieć obiekty, aby można je było używać jako klucze w słowniku?

sobes.tech AI

Odpowiedź od AI

Aby obiekt mógł być używany jako klucz w słowniku (np. w NSDictionary lub Swift Dictionary), musi spełniać następujące warunki:

  • Hashowalność: obiekt musi mieć poprawnie zaimplementowaną metodę obliczania hasza (hash w Swift, hashValue lub hash(into:)), aby słownik mógł szybko znaleźć klucz.
  • Porównywanie na równość: obiekt musi poprawnie implementować metodę porównania na równość (isEqual w Objective-C, Equatable w Swift), aby słownik mógł odróżniać różne klucze.

Na przykład, w Swift, aby użyć własnego typu jako klucza, należy zaimplementować protokoły Hashable i Equatable:

struct Person: Hashable {
    let id: Int
    let name: String
}

var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"

W ten sposób obiekty muszą być niezmienne w polach, które uczestniczą w obliczaniu hasza i porównaniu, aby klucze pozostały stabilne w słowniku.