Sobes.tech
Junior — Middle

Koje su restrikcije i zahtevi za objekte da bi mogli biti korišćeni kao elementi u hash tabelama ili hash strukturama u Swift-u?

sobes.tech АИ

Одговор од АИ

U Swift-u, da bi objekat mogao biti korišćen kao element u hash tabeli (na primer, kao ključ u rečniku ili element u skupu), mora biti usklađen sa protokolom Hashable.

Zahtevi:

  • Objekat mora implementirati metodu hash(into:), koja kombinuje vrednosti svojstava za izračunavanje heša.
  • Objekat mora implementirati operator jednakosti == (protokol Equatable) da bi ispravno upoređivao elemente.

Primer:

struct Person: Hashable {
    var id: Int
    var name: String

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }

    static func == (lhs: Person, rhs: Person) -> Bool {
        return lhs.id == rhs.id
    }
}

var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))

Stoga, objekti moraju imati stabilan i ispravno implementiran hash i poređenje da bi pravilno funkcionisali u hash strukturama.