Индексы словаря со значениями по умолчанию
Читайте значения словаря со встроенными значениями по умолчанию.
«Индексы словаря со значениями по умолчанию» — бесплатный урок Swift Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Поиск в словарях возвращает опциональное значение
Поиск ключа с помощью dict[key] возвращает опциональное значение, потому что ключ может отсутствовать. Это значение требует обработки.
let ages = ["Ann": 30]
let bob = ages["Bob"]
print(bob as Any)Индексатор со значением по умолчанию
Swift предоставляет индексатор со значением по умолчанию: dict[key, default: value]. Если ключ отсутствует, вы получаете значение по умолчанию вместо nil.
let ages = ["Ann": 30]
print(ages["Bob", default: 0])
print(ages["Ann", default: 0])Результат не является опциональным
В отличие от обычного поиска, индексатор со значением по умолчанию возвращает необязательное значение, поэтому его можно использовать сразу, не выполняя распаковку.
let stock = ["pen": 5]
let pens: Int = stock["pen", default: 0]
print(pens + 1)Подсчёт со значениями по умолчанию
Индексатор со значением по умолчанию особенно удобен при подсчёте вхождений. Начинайте отсчёт каждого ключа с 0 и увеличивайте его по мере обработки.
var counts: [String: Int] = [:]
let words = ["a", "b", "a", "a", "b"]
for word in words {
counts[word, default: 0] += 1
}
print(counts["a", default: 0])
print(counts["b", default: 0])Почему работает +=
Поскольку dict[key, default: 0] выдаёт настоящее значение даже для нового ключа, его можно безопасно изменять непосредственно с помощью +=.
var tally: [String: Int] = [:]
tally["x", default: 0] += 5
tally["x", default: 0] += 3
print(tally["x", default: 0])Суммирование по группам
С помощью индексатора со значением по умолчанию можно за один проход накапливать суммы для каждой категории.
let sales = [("apple", 3), ("pear", 2), ("apple", 4)]
var totals: [String: Int] = [:]
for (item, amount) in sales {
totals[item, default: 0] += amount
}
print(totals["apple", default: 0])Значение по умолчанию и объединение с отсутствующим значением
При чтении dict[key, default: 0] эквивалентно dict[key] ?? 0, но форма с индексатором также поддерживает изменение значения непосредственно.
let prices = ["tea": 3]
print(prices["tea"] ?? 0)
print(prices["tea", default: 0])Добавление к значениям-массивам
Индексатор со значением по умолчанию работает и со значениями-массивами, позволяя создавать сгруппированные списки.
var groups: [String: [Int]] = [:]
groups["even", default: []].append(2)
groups["even", default: []].append(4)
print(groups["even", default: []])Значения по умолчанию не добавляют ключ
Чтение со значением по умолчанию не добавляет ключ в словарь. Ключ сохраняется только при изменении значения, например с помощью +=.
var data: [String: Int] = [:]
_ = data["ghost", default: 0]
print(data.count)
data["real", default: 0] += 1
print(data.count)Выбор разумного значения по умолчанию
Выбирайте значение по умолчанию, соответствующее типу значения и операции: 0 для сумм, [] для списков, пустую строку для текста.
var notes: [String: String] = [:]
notes["greeting", default: ""] += "Hello"
notes["greeting", default: ""] += " World"
print(notes["greeting", default: ""])Сочетание подсчёта и чтения
Создайте таблицу частот, а затем считывайте из неё данные с тем же значением по умолчанию, чтобы на всём протяжении работы получать необязательное значение.
var freq: [Character: Int] = [:]
for ch in "banana" {
freq[ch, default: 0] += 1
}
print(freq["a", default: 0])
print(freq["z", default: 0])Быстрая проверка
Проверьте индексатор со значением по умолчанию.
Итоги: индексаторы словаря со значениями по умолчанию
Используйте dict[key, default: value], чтобы получать fallback-значение без опциональности и изменять значения непосредственно. Это особенно удобно для подсчёта, суммирования и группировки без ручных проверок на отсутствие значения.
var c: [String: Int] = [:]
for x in ["a", "a", "b"] { c[x, default: 0] += 1 }
print(c["a", default: 0])Часто задаваемые вопросы
Урок «Индексы словаря со значениями по умолчанию» бесплатный?
Да — полный текст урока «Индексы словаря со значениями по умолчанию» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «Индексы словаря со значениями по умолчанию»?
Читайте значения словаря со встроенными значениями по умолчанию. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Индексы словаря со значениями по умолчанию»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Оператор объединения с nil
- Цепочки значений по умолчанию
- Значения параметров функций по умолчанию
- Индексы словаря со значениями по умолчанию