Junior — Middle
Ի՞նչ կապ կա Swift լեզվի մեջ Hashable և Equatable պրոտոկոլների միջև։
sobes.tech AI
Պատասխան AI-ից
Swift- ում Equatable և Hashable պրոտոկոլները սերտորեն կապված են, քանի որ Hashable-ը ժառանգում է Equatable-ից:
- Equatable պահանջում է իրականացնել հավասարության օպերատոր
==, որը համեմատում է երկու օրինակների հավասարությունը: - Hashable ընդլայնում է Equatable-ը և պահանջում է իրականացնել
hashValueհատկությունը (կամhash(into:)մեթոդը), որը վերադարձնում է օբյեկտի հեշ-կոդը:
Կապը այն է, որ օբյեկտի հեշ-կոդը հաշվարկելու համար անհրաժեշտ է կարողանալ համեմատել օբյեկտները հավասարության համար, որպեսզի ճիշտ աշխատեն հեշ-կառուցված հավաքածուները (օրինակ, Set կամ Dictionary):
Օրինակ՝
struct Person: Hashable {
var id: Int
var name: String
static func == (lhs: Person, rhs: Person) -> Bool {
return lhs.id == rhs.id
}
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
}
Այստեղ, Person-ը համապատասխանում է Equatable և Hashable-ին, ինչը թույլ է տալիս օգտագործել այն հեշ-թերթերում։