Sobes.tech
Junior — Middle

Jaká jsou omezení a požadavky na objekty, aby je bylo možné použít jako prvky v hash tabulkách nebo hash strukturách ve Swiftu?

sobes.tech AI

Odpověď od AI

Ve Swiftu, aby mohl být objekt použit jako prvek v hashovací tabulce (například jako klíč v slovníku nebo prvek množiny), musí splňovat protokol Hashable.

Požadavky:

  • Objekt musí implementovat metodu hash(into:), která kombinuje hodnoty vlastností pro výpočet hashe.
  • Objekt musí implementovat operátor rovnosti == (protokol Equatable), aby správně porovnával prvky.

Příklad:

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: "Иван"))

Objekty by měly mít stabilní a správně implementované hash a porovnání, aby správně fungovaly ve hashovacích strukturách.