Sobes.tech
Junior — Middle

Оё мумкин аст объектро ҳамчун калид дар ҷамъоварии Dictionary ё структураи маълумоти монанд истифода бурд?

sobes.tech AI

Ҷавоб аз AI

Дар iOS (Swift ёки Objective-C) объектҳоро ҳамчун калидҳо дар луғатҳо (Dictionary) истифода бурдан мумкин аст, аммо объект бояд ба талаботи муайян ҷавобгӯ бошад.

Дар Swift, калидҳои луғат бояд ба протоколи Hashable мувофиқат кунанд, яъне, объект бояд методҳои хешгирӣ ва муқоисаи баробариро дуруст иҷро кунад. Ин барои он зарур аст, ки луғат метавонад самаранок арзишҳоро дар асоси калидҳо нигоҳ дорад ва ҷустуҷӯ кунад.

Масалан барои истифодаи объектҳои махсус ҳамчун калид:

struct Person: Hashable {
    let id: Int
    let name: String
}

var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"

Агар объект Hashable-ро иҷро накунад, онро ҳамчун калид истифода бурда наметавонанд. Дар Objective-C, калидҳои луғат бояд объектҳое бошанд, ки методҳои -hash ва -isEqual:-ро иҷро мекунанд.

Аз ин рӯ, объектҳоро ҳамчун калид истифода бурдан мумкин аст, агар онҳо дуруст хешгирӣ ва муқоиса иҷро кунанд.