Junior — Middle
Sınıf obyektinin lüğətdə açar kimi istifadə olunması üçün nə təmin edilməlidir?
sobes.tech Süni İntellekt
AI-dan cavab
Sınıf nesnesini sözlükte anahtar olarak kullanmak (örneğin, Swift Dictionary veya NSDictionary'de), aşağıdakilerin sağlanması gerekir:
-
Hashlenebilirlik — nesnenin doğru şekilde uygulanmış bir
hashyöntemi olmalı (hashSwift'te,hashValueObjective-C'de), böylece sözlük anahtarı hızlıca bulabilir. -
Eşitlik karşılaştırması — nesne, doğru şekilde
EquatableveyaisEqual:yöntemiyle karşılaştırılmalı, böylece sözlük iki anahtarın eşit olup olmadığını belirleyebilir.
Swift'te bu, sınıfın Hashable ve Equatable protokollerine uygun olması anlamına gelir. Örneğin:
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 doğru şekilde uygulanmaması durumunda, nesne sözlükte anahtar olarak kullanılamaz.