Объявление словарей
Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 12 из 56.
Словарь — это неупорядоченная коллекция пар ключ/значение. Тип ключа и тип значения фиксируются при его создании.
var prices: [String: Int] = [
"apple": 1,
"bread": 3,
"milk": 4
]
print(prices.count) // 3
print(prices.isEmpty) // falseАннотация типа [String: Int] читается как «ключи — это String, значения — это Int». Swift обычно может вывести его из литерала, но явное указание делает пустые инициализаторы однозначными:
var counts: [String: Int] = [:]
// в отличие от пустого массива, которому тоже понадобился бы типЧтение существующего ключа возвращает значение. Чтение несуществующего ключа возвращает nil, об этом пойдет речь в следующем уроке.
Задание
ЛегкоПрочитайте три строки ввода: имя, страну и целое число (возраст). Создайте один словарь с именем person с ключами типа String и значениями, которые вы прочитали (возраст остается Int, вам понадобится гетерогенный тип значений, см. подсказку).
Выведите три строки:
- Количество записей в словаре
name=<value>, используя доступ по индексу (subscript access)country=<value>, используя доступ по индексу (subscript access)
Используйте печатную форму: когда вы читаете значение словаря как Any, выполните принудительное извлечение (force-unwrap) перед печатью.
Для входных данных Alice / UK / 30 вывод будет следующим:
3
name=Alice
country=UKШпаргалка
Словарь (dictionary) хранит пары «ключ — значение» с фиксированными типами ключей и значений:
var prices: [String: Int] = [
"apple": 1,
"bread": 3,
"milk": 4
]
print(prices.count) // 3
print(prices.isEmpty) // falseСоздание пустого словаря с явным указанием типа:
var counts: [String: Int] = [:]Используйте [String: Any] для разнородных типов значений (смешанных типов):
var person: [String: Any] = [
"name": "Alice",
"age": 30
]Попробуйте сами
let name = readLine()!
let country = readLine()!
let age = Int(readLine()!)!
// TODO: создайте [String: Any] под названием person, выведите count, name, country
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаря3Словари
Объявление словарейБезопасный поискОбновление словарейИтерация по словарямГруппировка значенийИтоги — Инвентарь6Функции высшего порядка, часть 2
compactMapflatMapsorted(by:)Создание конвейеровПовторение — Таблица лидеров