Sobes.tech
Junior — Middle

Lug'atlar bilan ishlashda foydalanuvchi ob'ektlarini kalit sifatida ishlatishni qanday amalga oshirish mumkin?

sobes.tech AI

AIdan javob

Maxsus ob'ektlarni lug'atlarda kalit sifatida ishlatish uchun (masalan, Swift Dictionary'da), bu ob'ektlar Hashable va Equatable protokollariga mos kelishi kerak.

Bu shuni anglatadiki, sinf yoki tuzilma ob'ektlarning hash qiymatini hisoblash va tengligini tekshirish uchun metodlarni amalga oshirishi kerak.

Swift'da misol:

struct User: Hashable {
    let id: Int
    let name: String

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

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

var dict: [User: String] = [:]
let user1 = User(id: 1, name: "Alice")
dict[user1] = "Admin"

Ushbu misolda, lug'atning kaliti User ob'ekti bo'lib, u id bilan yagona tarzda aniqlanadi. hash(into:) va == ning amalga oshirilishi ob'ektlarni to'g'ri saqlash va qidirish imkonini beradi.