Выбор ответа Junior Коллекции и строки обновлено

Подсчёт частот в словаре

Вопрос

Как короче всего посчитать частоты слов в [String: Int]?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: counts[word, default: 0] += 1. Сабскрипт [key, default:] возвращает значение по умолчанию, если ключа нет, и позволяет мутировать на месте. counts[word]! упадёт на первом новом слове. counts[word] += 1 не компилируется: сабскрипт возвращает Int?. updateValue записывает…

Варианты ответа

  1. counts[word]! += 1
  2. counts[word, default: 0] += 1правильный ответ
  3. counts[word] += 1
  4. counts.updateValue(+1, forKey: word)

Разбор

Сабскрипт [key, default:] возвращает значение по умолчанию, если ключа нет, и позволяет мутировать на месте. counts[word]! упадёт на первом новом слове. counts[word] += 1 не компилируется: сабскрипт возвращает Int?. updateValue записывает значение, а не прибавляет. Ещё вариант: Dictionary(words.map { ($0, 1) }, uniquingKeysWith: +).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.