> Может ли в Swift словаре ключом быть любая структура? (iOS, Swift)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: MTS

Стек: iOS, Swift

> Пример ответа

Не любая, а только та, которая соответствует протоколу Hashable. Поскольку Dictionary в Swift реализован как хеш-таблица, ключ должен быть хешируемым. Если структура содержит только свойства, которые сами являются Hashable (например, Int, String, Bool, другие хешируемые структуры), то компилятор автоматически синтезирует реализацию Hashable. В противном случае нужно реализовать протокол вручную, определив функцию hash(into:) и оператор ==. Пример:

SWIFT
struct Person: Hashable {
let name: String
let age: Int
}
let dict: [Person: String] = [Person(name: "Alice", age: 30): "Developer"]

Если структура содержит нехешируемые типы (например, Float с NaN, или пользовательские классы без Hashable), использовать её как ключ не получится.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью