Sobes.tech
Junior — Middle

Welke eigenschappen moet een object hebben dat het Hashable-protocol implementeert, zodat het in hash-tabellen kan worden gebruikt?

sobes.tech AI

Antwoord van AI

Een object dat het Hashable-protocol in iOS (Swift) implementeert, moet de volgende eigenschappen bezitten:

  1. Conformiteit aan het Hashable-protocol — het object moet de methode hash(into:) implementeren, die alle belangrijke eigenschappen voor hashing toevoegt aan de hashfunctie.

  2. Gelijkheid (Equatable) — objecten die als gelijk worden beschouwd (via de operator ==) moeten dezelfde hash hebben.

Dit is nodig zodat het object in hash-tabellen kan worden gebruikt (bijvoorbeeld in Set of als sleutel in Dictionary), waarbij de hash de positie van het element bepaalt en gelijkheid de uniciteit.

Voorbeeld van implementatie:

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

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

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

Hier is id een unieke identifier, waarmee de hash en gelijkheid worden bepaald.