Back to questions
Junior — Middle
74
Какие условия и характеристики должны иметь объекты, чтобы их можно было использовать в качестве ключей в словаре?
Companies where asked
Магнит Тех
Uzum
Answer from AI
sobes.tech 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"
Таким образом, объекты должны быть неизменяемыми по полям, участвующим в вычислении хэша и сравнении, чтобы ключи оставались стабильными в словаре.