Выбор ответа Middle Коллекции и строки обновлено
Контракт Hashable в Swift
Вопрос
Какое требование к Hashable обязательно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Если a == b, то их хеши должны совпадать. Обязательна связь в одну сторону: равные значения дают равные хеши.
Варианты ответа
- Если
a == b, то их хеши должны совпадатьправильный ответ - Если хеши совпадают, значения обязаны быть равны
- Хеш должен быть одинаковым между запусками приложения
- Хеш должен вычисляться только из
id
Разбор
Обязательна связь в одну сторону: равные значения дают равные хеши. Обратное неверно, коллизии допустимы, просто замедляют поиск. Swift рандомизирует хеширование при каждом запуске, поэтому сохранять hashValue на диск или отправлять на сервер нельзя. Хешировать только id можно, но тогда и == должен сравнивать только id, иначе контракт нарушен.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Сколько символов в строке с флагом
Следующий вопрос
Задача на Swift: сгруппировать анаграммы
Ещё по теме «Коллекции и строки»
- Сложность append у Array в Swift
- ContiguousArray и мост с NSArray
- Подсчёт частот в словаре
- Порядок ключей в Dictionary
- Сложность операций коллекций Swift
- String и NSString: длина и индексы
- Как взять n-й символ строки в Swift
- Задача на Swift: правильная скобочная последовательность