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

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

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