Sobes.tech
Junior — Middle

Чӣ гуна истифодаи объектҳои фармоишӣ ҳамчун калидҳо дар кор бо луғатҳо амалӣ кардан мумкин аст?

sobes.tech AI

Ҷавоб аз AI

Барои истифодаи объектҳои фармоишӣ ҳамчун калидҳо дар луғатҳо (масалан, дар Swift Dictionary), ин объектҳо бояд ба протоколҳои Hashable ва Equatable мувофиқат кунанд.

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

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

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"

Дар ин мисол, калиди луғат объект User мебошад, ки ба таври ягона тавассути id муайян карда мешавад. Амалӣ кардани hash(into:) ва == имкон медиҳад, ки объектҳо дуруст дар луғат нигоҳ дошта ва ҷустуҷӯ карда шаванд.