Junior — Middle
Ko nepieciešams nodrošināt, lai klases objekts varētu tikt izmantots kā atslēga vārdnīcā?
sobes.tech AI
Atbilde no AI
Lai izmantotu klases objektu kā atslēgu vārdnīcā (piemēram, Swift Dictionary vai NSDictionary), ir jānodrošina:
-
Hashējamība — objekts jābūt pareizi īstenotam hash metodam (
hashSwift,hashValueObjective-C), lai vārdnīca varētu ātri atrast atslēgu. -
Vienlīdzības salīdzināšana — objekts jāīsteno pareizi salīdzināšanas metode (
EquatableSwift,isEqual:Objective-C), lai vārdnīca varētu noteikt, vai divas atslēgas ir vienādas.
Swift tas nozīmē, ka klasei jāatbilst Hashable un Equatable protokoliem. Piemērs:
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 pareizas šo metožu īstenošanas, objekts nevar tikt izmantots kā atslēga vārdnīcā.