Sobes.tech
Junior — Middle

Кадом намудҳои додаҳо ё объектҳо метавонанд ҳамчун калидҳо дар луғатҳо ё хештаблиҳо амал кунанд?

sobes.tech AI

Ҷавоб аз AI

Дар словарҳо (dictionary) ё ҷадвалҳои ҳеш, калидҳо метавонанд объектҳое бошанд, ки ба талаботи зерин ҷавобгӯ бошанд:

  • Методи муқоисаи баробарӣ (equals дар Java, isEqual дар Swift) ва ҳисоб кардани коди ҳеш (hashCode дар Java) дуруст татбиқ шудаанд.
  • Онҳо тағирнопазир (immutable) ё ҳадди аққал пас аз истифода ҳамчун калид тағир намеёбанд, то мушкилоти ҷустуҷӯро пешгирӣ кунанд.

Дар iOS (Swift), дар луғатҳо (Dictionary) одатан намудҳое истифода мешаванд, ки протоколи Hashable-ро мувофиқат мекунанд. Инҳо метавонанд:

  • намудҳои стандартӣ: String, Int, Double, Bool.
  • сохторҳо ё синфҳои махсус, ки протоколи Hashable-ро татбиқ мекунанд.

Масалан:

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

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

Аз ин рӯ, калидҳо бояд ҳешшаванда ва тағирнопазир бошанд, то кори дурустии луғат таъмин шавад.