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-თან, რაც საშუალებას აძლევს მას გამოიყენოს ჰეშ-ცხრილებში.