Sobes.tech
Junior — Middle

Koje osobine mora imati objekat koji implementira protokol Hashable da bi se mogao koristiti u hash tabelama?

sobes.tech АИ

Одговор од АИ

Objekat koji implementira protokol Hashable u iOS (Swift) mora imati sledeće osobine:

  1. Sukladnost sa protokolom Hashable — objekat mora implementirati metodu hash(into:), koja dodaje sve značajne osobine za heširanje u heš funkciju.

  2. Ekvivalentnost (Equatable) — objekti koji se smatraju jednakim (kroz operator ==) moraju imati isti heš.

Ovo je neophodno da bi objekat mogao biti korišćen u heš tabelama (npr. u Set ili kao ključ u Dictionary), gde heš određuje poziciju elementa, a jednakost — jedinstvenost.

Primer implementacije:

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

Ovde je id jedinstveni identifikator, po kojem se određuje heš i jednakost.