Sobes.tech
Junior — Middle

Come implementare l'uso di oggetti personalizzati come chiavi durante la gestione di dizionari?

sobes.tech AI

Risposta dell'AI

Per utilizzare oggetti personalizzati come chiavi nei dizionari (ad esempio, in Swift Dictionary), questi oggetti devono conformarsi ai protocolli Hashable e Equatable.

Ciò significa che la classe o la struttura devono implementare metodi per calcolare il valore hash e verificare l'uguaglianza degli oggetti.

Esempio in 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"

In questo esempio, la chiave del dizionario è un oggetto User, identificato in modo univoco tramite id. L'implementazione di hash(into:) e == consente di memorizzare e cercare correttamente gli oggetti nel dizionario.