Junior — Middle
Swift dilində Hashable və Equatable protokolları arasındakı əlaqə nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də, Equatable və Hashable protokolları sıx əlaqəlidir, çünki Hashable, Equatable-dan irsən alır.
- Equatable iki nümunəni bərabərlik üçün müqayisə etmək üçün
==operatorunun tətbiqini tələb edir. - Hashable, Equatable-ı genişləndirir və obyektin hash kodunu qaytaran
hashValue(və yahash(into:)) xüsusiyyətinin tətbiqini tələb edir.
Əlaqə odur ki, obyektin hash kodunu hesablamaq üçün onun bərabərlik üçün müqayisə edilə bilməsi lazımdır, beləliklə hash-əsaslı kolleksiyalar (məsələn, Set və ya Dictionary) düzgün işləyə bilər.
Nümunə:
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)
}
}
Burada, Person, Equatable və Hashable ilə uyğun gəlir və onu hash cədvəllərində istifadə etməyə imkan verir.