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
==(protokolEquatable), 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.