Junior — Middle
Kokios sąlygos ir savybės turi būti objektuose, kad juos būtų galima naudoti kaip raktus žodyne?
sobes.tech AI
Atsakymas iš AI
Kad objektas gali būti naudojamas kaip raktas žodyne (pavyzdžiui, NSDictionary arba Swift Dictionary), jis turi atitikti šias sąlygas:
- Hashable: objektas turi turėti teisingai įgyvendintą hash skaičiavimo metodą (
hashSwift,hashValuearbahash(into:)), kad žodynas galėtų greitai rasti raktą. - Lygumo palyginimas: objektas turi teisingai įgyvendinti lygumo palyginimo metodą (
isEqualObjective-C,EquatableSwift), kad žodynas galėtų atskirti skirtingus raktus.
Pavyzdžiui, Swift, norint naudoti savo tipą kaip raktą, reikia įgyvendinti Hashable ir Equatable protokolus:
struct Person: Hashable {
let id: Int
let name: String
}
var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"
Taip pat, objektai turi būti nekeičiami tose srityse, kurios dalyvauja hash skaičiavime ir palyginime, kad raktai liktų stabili žodyne.