0Pricing
Swift Academy · Урок

Индексы словаря со значениями по умолчанию

Читайте значения словаря со встроенными значениями по умолчанию.

«Индексы словаря со значениями по умолчанию» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Оператор объединения с nil
  2. Цепочки значений по умолчанию
  3. Значения параметров функций по умолчанию
  4. Индексы словаря со значениями по умолчанию
← Назад к Swift Academy