Junior — Middle
რა უნდა უზრუნველყოს კლასის ობიექტის გამოყენება სიტყვაკითხვაში გასაღებად?
sobes.tech AI
პასუხი AI-სგან
კლასის ობიექტის გამოყენება სიტყვარში გასაღებად (მაგალითად, Swift Dictionary ან NSDictionary-ში) საჭიროა უზრუნველყოს:
-
ჰეშირებადი — ობიექტს უნდა ჰქონდეს სწორად განხორციელებული ჰეშის მეთოდი (
hashSwift-ში,hashValueObjective-C-ში), რათა სიტყვარმა სწრაფად იპოვოს გასაღები. -
სწორი თანხვედრა თანასწორობისთვის — ობიექტი უნდა სწორად განახორციელოს შედარების მეთოდი (
EquatableSwift-ში,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"
მეთოდების სწორად განხორციელების გარეშე, ობიექტი ვერ იქნება გამოყენებული როგორც გასაღები სიტყვარში.