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 (
hashw Swift,hashValuelubhash(into:)), aby słownik mógł szybko znaleźć klucz. - Porównywanie na równość: obiekt musi poprawnie implementować metodę porównania na równość (
isEqualw Objective-C,Equatablew 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.