Sobes.tech
Junior — Middle

Welke beperkingen en vereisten bestaan er voor objecten om als elementen van hash-tabellen of hash-structuren in Swift te worden gebruikt?

sobes.tech AI

Antwoord van AI

In Swift, zodat een object kan worden gebruikt als element in een hash-tabel (bijvoorbeeld als sleutel in een woordenboek of element in een set), moet het voldoen aan het protocol Hashable.

Vereisten:

  • Het object moet de methode hash(into:) implementeren, die de waarden van de eigenschappen combineert om de hash te berekenen.
  • Het object moet de gelijkheid-operator == implementeren (protocol Equatable) om de elementen correct te vergelijken.

Voorbeeld:

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: "Иван"))

Dus, objecten moeten een stabiele en correct geïmplementeerde hash en vergelijking hebben om correct te functioneren in hash-structuren.