Junior — Middle
Чӣ тавр бояд таъмин карда шавад, ки объекти синф ҳамчун калид дар луғат истифода шавад?
sobes.tech AI
Ҷавоб аз AI
Барои истифодаи объекти синф ҳамчун калид дар луғат (масалан, дар Swift Dictionary ё NSDictionary), бояд таъмин кард:
-
Ҳешшавандагӣ — объект бояд як усули ҳеши дуруст амалӣ карда дошта бошад (
hashдар Swift,hashValueдар Objective-C), то ки луғат метавонад калидро зуд пайдо кунад. -
Мувофиқати баробарӣ — объект бояд усули муқоисаи дуруст амалӣ кунад (
Equatableдар Swift,isEqual:дар Objective-C), то ки луғат метавонад муайян кунад, ки ду калид баробар ҳастанд.
Дар Swift, ин маъно дорад, ки синф бояд ба протоколҳои Hashable ва Equatable мувофиқат кунад. Масалан:
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"
Бе иҷрои дурустии ин усулҳо, объект наметавонад ҳамчун калид дар луғат истифода шавад.