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:
-
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. -
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.