Sobes.tech
Junior — Middle

Quali condizioni e caratteristiche devono avere gli oggetti per poter essere usati come chiavi in un dizionario?

sobes.tech AI

Risposta dell'AI

Affinché un oggetto possa essere utilizzato come chiave in un dizionario (ad esempio, in NSDictionary o Swift Dictionary), deve soddisfare le seguenti condizioni:

  • Hashability: l'oggetto deve avere un metodo di calcolo dell'hash correttamente implementato (hash in Swift, hashValue o hash(into:)), affinché il dizionario possa trovare rapidamente la chiave.
  • Comparabilità per uguaglianza: l'oggetto deve implementare correttamente il metodo di confronto di uguaglianza (isEqual in Objective-C, Equatable in Swift), affinché il dizionario possa distinguere le diverse chiavi.

Ad esempio, in Swift, per usare un tipo personalizzato come chiave, è necessario implementare i protocolli Hashable e Equatable:

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

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

In questo modo, gli oggetti devono essere immutabili nei campi che partecipano al calcolo dell'hash e del confronto, affinché le chiavi rimangano stabili nel dizionario.