Sobes.tech
Junior — Middle

Aké podmienky a vlastnosti musia objekty spĺňať, aby ich bolo možné použiť ako kľúče v slovníku?

sobes.tech AI

Odpoveď od AI

Aby mohol byť objekt použitý ako kľúč v slovníku (napríklad v NSDictionary alebo Swift Dictionary), musí spĺňať nasledujúce podmienky:

  • Hashovateľnosť: objekt musí mať správne implementovanú metódu výpočtu hashu (hash v Swift, hashValue alebo hash(into:)), aby slovník mohol rýchlo nájsť kľúč.
  • Porovnateľnosť na rovnosť: objekt musí správne implementovať metódu porovnania na rovnosť (isEqual v Objective-C, Equatable v Swift), aby slovník mohol odlíšiť rôzne kľúče.

Napríklad, v Swift, na použitie vlastného typu ako kľúča, je potrebné implementovať 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 spôsobom musia byť objekty nemenné v poliach, ktoré sa podieľajú na výpočte hashu a porovnaní, aby kľúče zostali stabilné v slovníku.