Sobes.tech
Junior — Middle

Quali restrizioni e requisiti devono avere gli oggetti per poter essere utilizzati come elementi in tabelle hash o strutture hash in Swift?

sobes.tech AI

Risposta dell'AI

In Swift, affinché un oggetto possa essere utilizzato come elemento in una tabella hash (ad esempio, come chiave in un dizionario o elemento di un insieme), deve conformarsi al protocollo Hashable.

Requisiti:

  • L'oggetto deve implementare il metodo hash(into:), che combina i valori delle proprietà per calcolare l'hash.
  • L'oggetto deve implementare l'operatore di uguaglianza == (protocollo Equatable) per confrontare correttamente gli elementi.

Esempio:

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

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

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

var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))

Pertanto, gli oggetti devono avere un hash e un confronto stabili e correttamente implementati per funzionare correttamente nelle strutture hash.