Sobes.tech
Junior — Middle

Aan welke voorwaarden en kenmerken moeten objecten voldoen om als sleutels in een woordenboek te kunnen worden gebruikt?

sobes.tech AI

Antwoord van AI

Om een object als sleutel in een woordenboek te kunnen gebruiken (bijvoorbeeld in NSDictionary of Swift Dictionary), moet het aan de volgende voorwaarden voldoen:

  • Hashbaarheid: het object moet een correct geïmplementeerde hash-methode hebben (hash in Swift, hashValue of hash(into:)), zodat het woordenboek de sleutel snel kan vinden.
  • Vergelijkbaarheid op gelijkheid: het object moet de gelijkheidsvergelijkingsmethode (isEqual in Objective-C, Equatable in Swift) correct implementeren, zodat het woordenboek verschillende sleutels kan onderscheiden.

Bijvoorbeeld, in Swift, om een aangepast type als sleutel te gebruiken, moet je de protocollen Hashable en Equatable implementeren:

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

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

Op deze manier moeten de objecten onveranderlijk zijn in de velden die betrokken zijn bij de hash-berekening en vergelijking, zodat de sleutels stabiel blijven in het woordenboek.