Sobes.tech
Junior — Middle

Jaké podmínky a vlastnosti musí objekty splňovat, aby je bylo možné použít jako klíče ve slovníku?

sobes.tech AI

Odpověď od AI

Aby mohl být objekt použit jako klíč ve slovníku (například v NSDictionary nebo Swift Dictionary), musí splňovat následující podmínky:

  • Hashovatelnost: objekt musí mít správně implementovanou metodu výpočtu hashe (hash ve Swiftu, hashValue nebo hash(into:)), aby slovník mohl rychle najít klíč.
  • Porovnání na rovnost: objekt musí správně implementovat metodu porovnání na rovnost (isEqual v Objective-C, Equatable ve Swiftu), aby slovník mohl odlišit různé klíče.

Například ve Swiftu, pro použití vlastního typu jako klíče, je třeba implementovat protokoly Hashable a Equatable:

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

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

Tímto způsobem musí být objekty neměnné v polích, které se podílejí na výpočtu hashe a porovnání, aby klíče zůstaly stabilní v slovníku.