Sobes.tech
Junior — Middle

Swiftте хэш-таблицалар же хэш-структураларда элемент катары колдонуу үчүн объекттерде кандай чектөөлөр жана талаптар бар?

sobes.tech AI

AIден жооп

Swiftте, объектту хэш-таблица элемент катары колдонуу үчүн (мисалы, сөздүктө ачкыч же топтомдун элементи катары), ал Hashable протоколуна ылайык болушу керек.

Талаптар:

  • Объект hash(into:) ыкмасын ишке ашырышы керек, ал мүнөздөмөлөрдүн маанилерин бириктирип, хешти эсептейт.
  • Объект == теңдик операторун (протокол Equatable) ишке ашырышы керек, туура салыштыруу үчүн.

Мисал:

struct Person: Hashable {
    var id: Int
    var name: String

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }

    static func == (lhs: Person, rhs: Person) -> Bool {
        return lhs.id == rhs.id
    }
}

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

Ошентип, объекттер туруктуу жана туура ишке ашырылган хеш жана салыштыруу функцияларына ээ болушу керек, ошондо алар хеш-структураларда туура иштейт.