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:) և == իրականացումը թույլ է տալիս ճիշտ պահել և որոնել օբյեկտները բառարանում։