Junior — Middle
Какви условия и характеристики трябва да имат обектите, за да могат да се използват като ключове в речник?
sobes.tech AI
Отговор от AI
За да може обектът да бъде използван като ключ в речник (например в NSDictionary или Swift Dictionary), той трябва да отговаря на следните условия:
- Хешируемост: обектът трябва да има правилно реализиран метод за изчисляване на хеша (
hashв Swift,hashValueилиhash(into:)), за да може речникът бързо да намира ключа. - Сравнимост по равенство: обектът трябва правилно да реализира метода за сравнение по равенство (
isEqualв Objective-C,Equatableв Swift), за да може речникът да различава различните ключове.
Например, в Swift, за използване на потребителски тип като ключ, трябва да реализирате протоколите Hashable и Equatable:
struct Person: Hashable {
let id: Int
let name: String
}
var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"
По този начин, обектите трябва да бъдат неизменяеми по полетата, участващи в изчисляването на хеша и сравнението, за да останат стабилни ключовете в речника.