Sobes.tech
Junior — Middle

Milyen tulajdonságokkal kell rendelkeznie egy Hashable protokollt megvalósító objektumnak ahhoz, hogy hash-táblákban használható legyen?

sobes.tech MI

Válasz az MI-től

Egy olyan objektumnak, amely megvalósítja a Hashable protokollt iOS-en (Swift), a következő tulajdonságokkal kell rendelkeznie:

  1. Hashable protokollnak való megfelelés — az objektumnak implementálnia kell a hash(into:) metódust, amely hozzáadja az összes releváns tulajdonságot a hash függvényhez.

  2. Ekvivalencia (Equatable) — azonosnak tekintett objektumok (== operátorral) ugyanazzal a hash-sel kell rendelkezzenek.

Ez szükséges ahhoz, hogy az objektum hash-táblákban (például Set vagy Dictionary kulcsként) használható legyen, ahol a hash határozza meg az elem pozícióját, az egyenlőség pedig az egyediséget.

Implementációs példa:

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
    }
}

Itt az id egy egyedi azonosító, amely alapján meghatározható a hash és az egyenlőség.