Hashable



🟢 lvl: jun+



Продолжаем идти по базе. Любой уважающий себя джун должен знать отличия словаря от сета. А еще, что только типы данных с протоколом Hashable мы можем пихать в множество или в ключ словаря.



ℹ️ Хэширование: что и зачем



Хэширование — это процесс применения алгоритма для преобразования элемента данных в значение. Элемент данных может быть простым целым числом, строкой или сложным объектом с несколькими свойствами.



Алгоритм называется хеш-функцией или хэшером. Преобразованное значение называется хэш-значением, хэш-кодом или просто хэшем.



Хэширование должно соблюдать правила:

🟪 Хэш-значения должны быть уникальными

🟦 Хэш-значения должны быть случайными

🟥 Хэш-значения не обязательно должны быть положительными целыми числами



Хэширование широко используется в нашей жизни:

Работа с базой данных: поиск

Почти все веб-сайты и мобильные приложения имеют функцию поиска где-то в своих приложениях. Реализация функции поиска предполагает использование хеширования.



Криптография: пароль

Чтобы защитить наш пароль нужно его захэшировать. Мало ли его перехватят



◾️Структуры данных в программировании: Словарь

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



Поняв общее представление о хэшировании опустимся к тому, что предоставляет Apple.



Hashable — тип, который можно хешировать в хешере для получения целочисленного хеш-значения



Подробнее можно почитать в этой статье, лучше о хэше не найдешь