Sobes.tech
Junior — Middle

Wat is de relatie tussen de protocollen Hashable en Equatable in de Swift-taal?

sobes.tech AI

Antwoord van AI

In Swift zijn de protocollen Equatable en Hashable nauw met elkaar verbonden, omdat Hashable afgeleid is van Equatable.

  • Equatable vereist de implementatie van de gelijkheid-operator == om twee instanties op gelijkheid te vergelijken.
  • Hashable breidt Equatable uit en vereist de implementatie van de eigenschap hashValue (of de methode hash(into:)), die de hash-code van het object retourneert.

De relatie is dat, om de hash-code van een object te berekenen, het mogelijk moet zijn om objecten op gelijkheid te vergelijken, zodat correct gewerkt kan worden met hash-gebaseerde collecties (zoals Set of Dictionary).

Voorbeeld:

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

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

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

Hier voldoet Person aan zowel Equatable als Hashable, waardoor het in hash-tabellen gebruikt kan worden.