> Может ли в Swift словаре ключом быть любая структура? (iOS, Swift)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: MTS
Стек: iOS, Swift
> Пример ответа
Не любая, а только та, которая соответствует протоколу Hashable. Поскольку Dictionary в Swift реализован как хеш-таблица, ключ должен быть хешируемым. Если структура содержит только свойства, которые сами являются Hashable (например, Int, String, Bool, другие хешируемые структуры), то компилятор автоматически синтезирует реализацию Hashable. В противном случае нужно реализовать протокол вручную, определив функцию hash(into:) и оператор ==. Пример:
SWIFTstruct Person: Hashable {let name: Stringlet age: Int}let dict: [Person: String] = [Person(name: "Alice", age: 30): "Developer"]
Если структура содержит нехешируемые типы (например, Float с NaN, или пользовательские классы без Hashable), использовать её как ключ не получится.
> Похожие задачи по mobile
Как относишься к прохождению полиграфа с общими вопросами?
В чем разница между семафором и барьером?
Какие KPI и бонусы за выпуск приложений?
Сколько человек было в подчинении как тимлида?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью