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

Метод reduce

Метод reduce сворачивает элементы итератора в одно значение, последовательно применяя функцию-аккумулятор к парам элементов. В отличие от метода fold, метод reduce не принимает начальное значение, а использует первый элемент итератора в качестве начального аккумулятора. Параметром метод принимает замыкание, которое получает текущий аккумулятор и следующий элемент, а возвращает новое значение аккумулятора.

Синтаксис

iter.reduce(func)

Пример

Давайте сложим все элементы вектора vec![1, 2, 3, 4, 5] с помощью метода reduce:

fn main() { let res = vec![1, 2, 3, 4, 5].into_iter().reduce(|acc, x| acc + x); println!("{:?}", res); }

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

Some(15)

Пример

Давайте найдём максимальный элемент в векторе vec![1, 2, 3, 4, 5] с помощью метода reduce:

fn main() { let res = vec![1, 2, 3, 4, 5].into_iter().reduce(|acc, x| if x > acc { x } else { acc }); println!("{:?}", res); }

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

Some(5)

Пример

Давайте объединим все строки вектора vec!["a", "b", "c", "d", "e"] в одну строку с помощью метода reduce:

fn main() { let res = vec!["a", "b", "c", "d", "e"].into_iter().reduce(|acc, x| acc + x); println!("{:?}", res); }

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

Some("abcde")

Пример

Если итератор пуст, метод reduce возвращает None:

fn main() { let res = Vec::<i32>::new().into_iter().reduce(|acc, x| acc + x); println!("{:?}", res); }

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

None

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

  • метод fold,
    который сворачивает итератор с заданным начальным значением
  • метод map,
    который преобразует каждый элемент итератора
  • метод filter,
    который отбирает элементы по условию
  • метод collect,
    который собирает элементы итератора в коллекцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить