Junior — Middle
Jaké vlastnosti musí mít objekt implementující protokol Hashable, aby jej bylo možné použít v hash tabulkách?
sobes.tech AI
Odpověď od AI
Objekt, který implementuje protokol Hashable v iOS (Swift), musí mít následující vlastnosti:
-
Soulad s protokolem Hashable — objekt musí implementovat metodu
hash(into:), která přidává všechny důležité vlastnosti pro hashování do hashovací funkce. -
Ekvivalence (Equatable) — objekty považované za stejné (pomocí operátoru
==) musí mít stejný hash.
To je nutné, aby bylo možné objekt použít v hashovacích tabulkách (například v Set nebo jako klíč v Dictionary), kde hash určuje pozici prvku a rovnost zajišťuje jedinečnost.
Příklad implementace:
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
}
}
Zde je id jedinečný identifikátor, podle kterého se určuje hash a rovnost.