Sobes.tech
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"

Таким образом, объекты должны быть неизменяемыми по полям, участвующим в вычислении хэша и сравнении, чтобы ключи оставались стабильными в словаре.