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.