РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
709 of 1245 menu

Метод or_default

Метод or_default вызывается у значения типа Entry, которое получается через метод entry у HashMap. Если запись с указанным ключом уже существует, метод возвращает изменяемую ссылку на её значение. Если записи нет, метод вставляет в словарь значение по умолчанию для типа значения и возвращает изменяемую ссылку на него. Параметров метод не принимает. Тип значения должен реализовывать трейт Default.

Синтаксис

entry.or_default()

Пример

Давайте создадим пустой словарь и с помощью or_default вставим в него значение для ключа "a":

use std::collections::HashMap; fn main() { let mut map: HashMap<&str, i32> = HashMap::new(); let value = map.entry("a").or_default(); *value += 5; println!("{:?}", map); }

Результат выполнения кода:

{"a": 5}

Пример

Давайте проверим, что при наличии существующей записи метод or_default не перезаписывает её значение:

use std::collections::HashMap; fn main() { let mut map: HashMap<&str, i32> = HashMap::new(); map.insert("a", 10); let value = map.entry("a").or_default(); *value += 5; println!("{:?}", map); }

Результат выполнения кода:

{"a": 15}

Пример

Давайте используем or_default для подсчёта количества вхождений слов в тексте:

use std::collections::HashMap; fn main() { let mut map: HashMap<&str, i32> = HashMap::new(); for word in ["abcde", "12345", "abcde", "abcde"] { *map.entry(word).or_default() += 1; } println!("{:?}", map); }

Результат выполнения кода:

{"12345": 1, "abcde": 3}

Смотрите также

  • метод entry,
    который возвращает Entry для указанного ключа
  • метод or_insert,
    который вставляет указанное значение, если запись отсутствует
  • метод or_insert_with,
    который вставляет значение, вычисленное замыканием
  • метод and_modify,
    который изменяет значение существующей записи
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить