Sobes.tech
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"

Бинобар ин, объектҳо бояд дар майдонҳое, ки дар ҳисоб кардани хеш ва муқоиса иштирок мекунанд, тағйирнопазир бошанд, то калидҳо дар луғат устувор боқӣ монад.