Выбор ответа Middle Коллекции и строки обновлено

Контракт Hashable в Swift

Вопрос

Какое требование к Hashable обязательно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Если a == b, то их хеши должны совпадать. Обязательна связь в одну сторону: равные значения дают равные хеши.

Варианты ответа

  1. Если a == b, то их хеши должны совпадатьправильный ответ
  2. Если хеши совпадают, значения обязаны быть равны
  3. Хеш должен быть одинаковым между запусками приложения
  4. Хеш должен вычисляться только из id

Разбор

Обязательна связь в одну сторону: равные значения дают равные хеши. Обратное неверно, коллизии допустимы, просто замедляют поиск. Swift рандомизирует хеширование при каждом запуске, поэтому сохранять hashValue на диск или отправлять на сервер нельзя. Хешировать только id можно, но тогда и == должен сравнивать только id, иначе контракт нарушен.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.