Sobes.tech
Junior — Middle

Aké obmedzenia a požiadavky existujú pre objekty, aby mohli byť použité ako prvky hash tabuliek alebo hash štruktúr v Swift?

sobes.tech AI

Odpoveď od AI

V Swift, da bi objekt lahko bil uporabljen kot element v hashtabeli (na primer, kot ključ v slovarju ali element v množici), mora ustrezati protokolu Hashable.

Zahteve:

  • Objekt mora implementirati metodo hash(into:), ki kombinira vrednosti lastnosti za izračun hasha.
  • Objekt mora implementirati operator enakosti == (protokol Equatable), da pravilno primerja 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: "Иван"))

Torej, objekti morajo imeti stabilen in pravilno implementiran hash in primerjavo, da pravilno delujejo v hash strukturah.