Sobes.tech
Junior — Middle

Čo je potrebné zabezpečiť, aby bolo možné použiť objekt triedy ako kľúč v slovníku?

sobes.tech AI

Odpoveď od AI

Na použitie objektu triedy ako kľúča v slovníku (napríklad v Swift Dictionary alebo NSDictionary) je potrebné zabezpečiť:

  1. Hashovateľnosť — objekt musí mať správne implementovanú metódu hash (hash v Swift, hashValue v Objective-C), aby slovník mohol rýchlo nájsť kľúč.

  2. Porovnateľnosť na rovnosť — objekt musí správne implementovať metódu porovnania (Equatable v Swift, isEqual: v Objective-C), aby slovník mohol určiť, či sú dva kľúče rovnaké.

V Swift to znamená, že trieda musí spĺňať protokoly Hashable a Equatable. Napríklad:

class Person: Hashable {
    var id: Int
    var name: String

    init(id: Int, name: String) {
        self.id = id
        self.name = name
    }

    static func == (lhs: Person, rhs: Person) -> Bool {
        return lhs.id == rhs.id
    }

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }
}

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

Bez správnej implementácie týchto metód nemôže byť objekt použitý ako kľúč v slovníku.