Junior — Middle
Класстын объектисин словарьда ачкыч катары колдонуу үчүн эмне камсыз кылуу керек?
sobes.tech AI
AIден жооп
Sınıf obyekti sözlükte açar kimi istifadə etmək üçün (məsələn, Swift Dictionary və ya NSDictionary-də), aşağıdakı təmin edilməlidir:
-
Hashlenebilirlik — obyekt düzgün şəkildə həyata keçirilmiş hash metoduna malik olmalıdır (
hashSwift-də,hashValueObjective-C-də), beləliklə sözlük açarı tez tapa bilər. -
Bərabərlik üçün müqayisə — obyekt düzgün şəkildə müqayisə metodunu (
EquatableSwift-də,isEqual:Objective-C-də) həyata keçirməlidir ki, sözlük iki açarın bərabər olub-olmadığını müəyyən edə bilsin.
Swift-də bu, sinifin Hashable və Equatable protokollarına uyğun olmasını tələb edir. Məsələn:
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"
Bu metodların düzgün həyata keçirilməməsi halında, obyekt sözlükdə açar kimi istifadə oluna bilməz.