Ответ
В Swift тип словаря определяется как Dictionary<Key, Value> или [Key: Value].
Требования к ключам:
- Ключ должен соответствовать протоколу
Hashable. - Это гарантирует, что ключ можно однозначно идентифицировать и использовать для быстрого поиска.
- Стандартные типы:
String,Int,Double,Bool,Character,URLи т.д. - Пользовательские типы: Нужно реализовать
Hashable(часто через автоматический синтез).struct UserID: Hashable { // Автоматический синтез работает let rawValue: Int } var scores: [UserID: Int] = [:]
Требования к значениям:
- Ограничений нет. Значением может быть любой тип.
- Могут повторяться для разных ключей.
- Могут быть опционалами, массивами, другими словарями, функциями (
closures) или экземплярами классов.
// Словарь с разными типами значений
var heterogeneousDict: [String: Any] = [
"name": "Alice", // String
"age": 30, // Int
"scores": [95, 87, 92], // Array<Int>
"meta": [ // Dictionary
"timestamp": Date()
],
"handler": { print("Done") } // Closure
]
// Словарь с опциональными значениями
var optionalDict: [String: String?] = [
"optionalKey": nil
]
Рекомендация: Избегайте типа Any для значений. Используйте дженерики или enum с ассоциированными значениями для типобезопасности.