Sobes.tech
Middle

Чӣ тавр луғат дар забони барномасозии Swift сохта шудааст?

sobes.tech AI

Ҷавоб аз AI

Дикшнери Dictionary дар Swift намоишгари маҷмӯаи номарзии ҷуфтҳои калид-арзиш мебошад. Ҳар як калид дар дикшнери он беназир аст ва барои дастрасии зуд ба арзиши мувофиқ истифода мешавад. Он асосан бар асоси ҷадвали хеш (hash table) амалӣ шудааст.

Калидҳо бояд протоколи Hashable-ро иҷро кунанд, ки имконият медиҳад, ки барои ҳар як калид хеш ҳисоб карда шавад. Арзишҳо метавонанд ҳар гуна навъ бошанд.

Оператсияҳои асосӣ бо дикшнери иборатанд аз:

  • Эҷоди дикшнери холӣ ё бо арзишҳои ибтидоӣ.
  • Дастрасӣ ба арзиш тавассути калид (баргардондани арзиши имконотӣ, зеро калид метавонад вуҷуд надошта бошад).
  • Илова ё навсозии арзиш тавассути калид.
  • Ҳамроҳ кардани арзиш тавассути калид.
  • Нест кардани арзиш тавассути калид.
  • Итератсия дар байни ҷуфтҳои калид-арзиш.
  • Гирифтани маҷмӯаҳои ҳамаи калидҳо ё ҳамаи арзишҳо.

Ҳангоми илова кардан ё навсозии унсур, Swift хеши калидро ҳисоб мекунад, ҷойро дар ҷадвали хеш муайян мекунад ва он ҷо ҷуфт калид-арзишро мегузорад. Дар ҷустуҷӯи унсур тавассути калид, раванд монанд ба ҳисоб кардани хеш ва дастрасӣ ба ҷойи дахлдор аст.

Дар ҳолати коллизияҳои хеш (ҳангоми ки калидҳои гуногун як хеш доранд), Swift усулҳои ҳал кардани коллизияҳоро истифода мебарад, масалан, chaining, барои нигоҳ доштани чанд ҷуфт дар як ҷой.

Ҳангоми зиёд шудани шумораи унсурҳо, дикшнери метавонад rehash кунад ва андозаи сохтори додаҳоро тағир диҳад, то иҷрои оптималӣ нигоҳ дошта шавад.

Масалан истифода:

// Эҷоди дикшнери
var userInfo: [String: Any] = [
    "name": "Alice",
    "age": 30,
    "city": "New York"
]

// Дастрасӣ ба арзиш
if let name = userInfo["name"] as? String {
    // ...
}

// Илова/навсозии арзиш
userInfo["job"] = "Developer"
userInfo["age"] = 31

// Нест кардани арзиш
userInfo["city"] = nil

// Итератсия
for (key, value) in userInfo {
    print("\(key): \(value)")
}