Junior — Middle
Шартҳо ва хусусиятҳо кадомҳоянд, ки объектҳо бояд дошта бошанд, то ки онҳоро ҳамчун калидҳо дар луғат истифода бурда тавонем?
sobes.tech AI
Ҷавоб аз AI
Барои истифодаи объект ҳамчун калид дар луғат (масалан, дар NSDictionary ё Swift Dictionary), он бояд ба шароитҳои зерин ҷавобгӯ бошад:
- Hashable: объект бояд усули ҳисоб кардани хешро дуруст иҷро кунад (
hashдар Swift,hashValueёhash(into:)), то ки луғат метавонад калидро зуд пайдо кунад. - Мувофиқати баробарӣ: объект бояд усули муқоиса барои баробариро дуруст иҷро кунад (
isEqualдар Objective-C,Equatableдар Swift), то ки луғат метавонад калидҳои гуногунро фарқ кунад.
Масалан, дар Swift, барои истифодаи намудҳои фармоишӣ ҳамчун калид, бояд протоколҳои Hashable ва Equatable-ро иҷро кунед:
struct Person: Hashable {
let id: Int
let name: String
}
var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"
Бинобар ин, объектҳо бояд дар майдонҳое, ки дар ҳисоб кардани хеш ва муқоиса иштирок мекунанд, тағйирнопазир бошанд, то калидҳо дар луғат устувор боқӣ монад.