Что может быть ключом и значением для dictionary
Словарь (`Dictionary`) представляет собой коллекцию пар ключ-значение, где каждый ключ должен быть уникальным. Чтобы использовать какой-либо тип в качестве ключа словаря, этот тип должен соответствовать протоколу `Hashable`. Это требование обусловлено тем, что Swift использует хеш-таблицу для хранения элементов словаря, что обеспечивает быстрый доступ к его элементам.
Ключи
- Должны быть уникальными: Каждый ключ в словаре должен быть уникальным. При попытке добавить в словарь элемент с ключом, который уже существует в словаре, старое значение будет заменено на новое.
- Должны соответствовать протоколу `Hashable`: Это означает, что тип ключа должен иметь способность быть правильно хешированным. Большинство базовых типов Swift (например, `String`, `Int`, `Double` и др.) уже соответствуют `Hashable`, поэтому их можно использовать в качестве ключей без дополнительных усилий.
Значения
- Могут быть любого типа: Значения в словаре могут быть любого типа, и они не обязаны соответствовать протоколу `Hashable`.
- Могут повторяться: Разные ключи могут иметь одинаковые значения.
Пример
```swift
var personAge: [String: Int] = ["John": 30, "Sara": 25]
```
В этом примере ключами являются строки (`String`), представляющие имена людей, а значениями — целые числа (`Int`), представляющие их возраст. Тип `String` соответствует `Hashable`, что делает его подходящим в качестве ключа для `Dictionary`.
Собственные типы в качестве ключей
Вы также можете использовать собственные пользовательские типы в качестве ключей словаря, но для этого ваш тип должен соответствовать протоколу `Hashable`. Это включает в себя реализацию требуемых методов для сравнения на равенство (`==`) и хеширования (`hash(into:)`).
```swift
struct Person: Hashable {
var name: String
var id: Int
}
var peopleDictionary: [Person: String] = [Person(name: "John", id: 1): "Engineer"]
```
Здесь `Person` — это пользовательский тип, соответствующий `Hashable`, что позволяет использовать его в качестве ключа. Значения в этом словаре — строки, описывающие профессию человека.
April 10, 2024, easyoffer