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