Sobes.tech
Junior — Middle

რა უნდა უზრუნველყოს კლასის ობიექტის გამოყენება სიტყვაკითხვაში გასაღებად?

sobes.tech AI

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

კლასის ობიექტის გამოყენება სიტყვარში გასაღებად (მაგალითად, Swift Dictionary ან NSDictionary-ში) საჭიროა უზრუნველყოს:

  1. ჰეშირებადი — ობიექტს უნდა ჰქონდეს სწორად განხორციელებული ჰეშის მეთოდი (hash Swift-ში, hashValue Objective-C-ში), რათა სიტყვარმა სწრაფად იპოვოს გასაღები.

  2. სწორი თანხვედრა თანასწორობისთვის — ობიექტი უნდა სწორად განახორციელოს შედარების მეთოდი (Equatable Swift-ში, isEqual: Objective-C-ში), რათა სიტყვარმა განსაზღვროს, ორი გასაღები თანასწორია თუ არა.

Swift-ში ეს ნიშნავს, რომ კლასი უნდა შეესაბამებოდეს Hashable და Equatable პროტოკოლებს. მაგალითად:

class Person: Hashable {
    var id: Int
    var name: String

    init(id: Int, name: String) {
        self.id = id
        self.name = name
    }

    static func == (lhs: Person, rhs: Person) -> Bool {
        return lhs.id == rhs.id
    }

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }
}

var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"

მეთოდების სწორად განხორციელების გარეშე, ობიექტი ვერ იქნება გამოყენებული როგორც გასაღები სიტყვარში.