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