Sobes.tech
Junior — Middle

Jak implementovat použití vlastních objektů jako klíčů při práci se slovníky?

sobes.tech AI

Odpověď od AI

Pro použití vlastních objektů jako klíčů v slovnících (například v Swift Dictionary) musí tyto objekty splňovat protokoly Hashable a Equatable.

To znamená, že třída nebo struktura musí implementovat metody pro výpočet hodnoty hash a kontrolu rovnosti objektů.

Příklad ve Swift:

struct User: Hashable {
    let id: Int
    let name: String

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

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

var dict: [User: String] = [:]
let user1 = User(id: 1, name: "Alice")
dict[user1] = "Admin"

V tomto příkladu je klíčem slovníku objekt User, který je jednoznačně identifikován pomocí id. Implementace hash(into:) a == umožňuje správné ukládání a vyhledávání objektů ve slovníku.