Sobes.tech
Назад к вопросам
Junior — Middle
69

Какие свойства обязан иметь объект, реализующий протокол Hashable, чтобы его можно было использовать в хэш-таблицах?

Компании, где спрашивали
VKVK

Ответ от нейросети

sobes.tech AI

Объект, реализующий протокол Hashable в iOS (Swift), должен обладать следующими свойствами:

  1. Конформность к протоколу Hashable — объект должен реализовать метод hash(into:), который добавляет все значимые для хэширования свойства в хэш-функцию.

  2. Эквивалентность (Equatable) — объекты, считающиеся равными (через оператор ==), должны иметь одинаковый хэш.

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

Пример реализации:

struct User: Hashable {
    var id: Int
    var name: String

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }

    static func == (lhs: User, rhs: User) -> Bool {
        return lhs.id == rhs.id
    }
}

Здесь id — уникальный идентификатор, по которому определяется хэш и равенство.