Sobes.tech
Junior — Middle

Swiftda hash-jadval yoki hash-tuzilmalarda element sifatida ishlatilishi uchun ob'ektlar uchun qanday cheklovlar va talablar mavjud?

sobes.tech AI

AIdan javob

Swiftda, obyekt hash jadvali elementi sifatida ishlatilishi uchun (masalan, lug‘atda kalit yoki to‘plam element sifatida) Hashable protokoliga mos kelishi kerak.

Talablar:

  • Ob'ekt hash(into:) metodini amalga oshirishi kerak, u xususiyatlar qiymatlarini birlashtirib, hash hisoblaydi.
  • Ob'ekt == tenglik operatorini (protokol Equatable) amalga oshirishi kerak, to‘g‘ri solishtirish uchun.

Misol:

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: "Иван"))

Shu sababli, obyektlar barqaror va to‘g‘ri amalga oshirilgan hash va taqqoslashga ega bo‘lishi kerak, shunda ular hash tuzilmalarida to‘g‘ri ishlaydi.