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

Метод fold

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

Синтаксис

iterator.fold(init, |acc, item| { ... })

Пример

Давайте найдём сумму всех элементов вектора [1, 2, 3, 4, 5], начиная с нуля:

fn main() { let res = vec![1, 2, 3, 4, 5] .iter() .fold(0, |acc, x| acc + x); println!("{}", res); }

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

15

Пример

Давайте соберём строку из элементов вектора ["a", "b", "c", "d", "e"], начав с пустой строки:

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

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

"abcde"

Пример

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

fn main() { let res = vec![1, 2, 3, 4, 5] .iter() .fold(0, |acc, x| if *x > acc { *x } else { acc }); println!("{}", res); }

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

5

Пример

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

fn main() { let res = vec![1, 2, 3, 4, 5] .iter() .fold(0, |acc, x| if x % 2 == 0 { acc + 1 } else { acc }); println!("{}", res); }

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

2

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

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