Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : dictionary, hashable

Какие требования предъявляются к ключам в Dictionary?

Вопрос проверяет знание контрактов Dictionary и понимание работы хэш-таблиц в Swift.

Короткий ответ

Ключи в Dictionary должны соответствовать протоколу Hashable. Это означает, что для них определены корректные hash и сравнение на равенство. Одинаковые ключи должны иметь одинаковый хэш. Без выполнения этих условий словарь не сможет корректно работать.

Длинный ответ

Dictionary в Swift реализован как хэш-таблица, поэтому к ключам предъявляются строгие требования.

Основное требование

Определение: ключ словаря обязан соответствовать протоколу Hashable.

Это включает два обязательных аспекта:

  • реализацию hash(into:)

  • корректную реализацию Equatable

Контракт Hashable

Ключевые правила:

  1. Если a == b, то их hash должен быть одинаковым

  2. Обратное не обязательно

  3. Хэш должен быть стабильным на время жизни ключа в словаре

Практический пример

struct UserID: Hashable {
    let id: Int
}

Если поле, участвующее в hash, изменится после добавления в словарь — поведение станет некорректным.

Что нельзя делать

  • использовать изменяемые свойства в ключе

  • нарушать равенство и хэширование

  • менять ключ после вставки

Краткий вывод

Ключ словаря должен быть неизменяемым и корректно реализовывать Hashable, иначе Dictionary теряет корректность работы.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Swift

    Swift

Ключевые слова

#dictionary

#hashable

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.