Sobes.tech
Junior — Middle

Кадом намудҳои объектҳо иҷозат дода мешаванд ҳамчун унсурҳои калидӣ дар коллексияи навъи Set?

sobes.tech AI

Ҷавоб аз AI

Дар коллексияи навъи Set дар iOS (масалан, NSSet ё Swift Set), унсурҳои калидӣ метавонанд объектҳое бошанд, ки ба талаботи зерин ҷавобгӯ бошанд:

  • Дар Objective-C (NSSet): объектҳо бояд методҳои -hash ва -isEqual:-ро дастгирӣ кунанд, то муқоиса ва хешкунии дуруст анҷом дода шавад.
  • Дар Swift (Set): унсурҳо бояд ба протоколи Hashable мувофиқат кунанд, яъне арзиши хеш дошта бошанд ва имконияти муқоиса барои баробариро дошта бошанд.

Ин барои он зарур аст, ки коллексия метавонад унсурҳои беназирро самаранок нигоҳ дорад ва амалиёти ҷустуҷӯро ба суръат иҷро кунад.

Масалан дар Swift:

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

var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))

Аз ин рӯ, ҳар объекте, ки Hashable-ро иҷро мекунад (дар Swift) ё методҳои hash ва isEqual:-ро дар Objective-C дорад, метавонад унсури Set бошад.