Sobes.tech
Junior — Middle

რა თვისებები უნდა ჰქონდეს ობიექტს, რომელიც ახორციელებს Hashable პროტოკოლს, რათა მისი გამოყენება შესაძლებელი იყოს ჰეშ-ცხრილებში?

sobes.tech AI

პასუხი AI-სგან

iOS (Swift)-ში Hashable პროტოკოლს ამოქმედებული ობიექტი უნდა ჰქონდეს შემდეგი თვისებები:

  1. შესაბამისობა Hashable პროტოკოლთან — ობიექტმა უნდა განახორციელოს მეთოდი hash(into:), რომელიც ყველა მნიშვნელოვანი თვისების დამატებას ახდენს ჰეშირების ფუნქციაში.

  2. სამართლიანობა (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 არის უნიკალური იდენტიფიკატორი, რომლის საშუალებითაც განსაზღვრება ჰეში და თანხვედრა.