Junior — Middle
Čo je potrebné zabezpečiť, aby bolo možné použiť objekt triedy ako kľúč v slovníku?
sobes.tech AI
Odpoveď od AI
Na použitie objektu triedy ako kľúča v slovníku (napríklad v Swift Dictionary alebo NSDictionary) je potrebné zabezpečiť:
-
Hashovateľnosť — objekt musí mať správne implementovanú metódu hash (
hashv Swift,hashValuev Objective-C), aby slovník mohol rýchlo nájsť kľúč. -
Porovnateľnosť na rovnosť — objekt musí správne implementovať metódu porovnania (
Equatablev Swift,isEqual:v Objective-C), aby slovník mohol určiť, či sú dva kľúče rovnaké.
V Swift to znamená, že trieda musí spĺňať protokoly Hashable a Equatable. Napríklad:
class Person: Hashable {
var id: Int
var name: String
init(id: Int, name: String) {
self.id = id
self.name = name
}
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.id == rhs.id
}
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
}
var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"
Bez správnej implementácie týchto metód nemôže byť objekt použitý ako kľúč v slovníku.