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

Метод fold

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

Синтаксис

iterable.fold(initialValue, (accumulator, element) => ...)

Пример

Давайте найдём сумму всех элементов списка, взяв в качестве начального значения 0:

void main() { List<int> numbers = [1, 2, 3, 4, 5]; int res = numbers.fold(0, (acc, item) => acc + item); print(res); }

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

15

Пример

Давайте найдём произведение всех элементов списка, взяв в качестве начального значения 1:

void main() { List<int> numbers = [1, 2, 3, 4, 5]; int res = numbers.fold(1, (acc, item) => acc * item); print(res); }

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

120

Пример

Давайте соберём все элементы списка строк в одну строку:

void main() { List<String> letters = ['a', 'b', 'c', 'd', 'e']; String res = letters.fold('', (acc, item) => acc + item); print(res); }

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

"abcde"

Пример

Давайте найдём максимальный элемент списка, взяв в качестве начального значения первый элемент:

void main() { List<int> numbers = [1, 2, 3, 4, 5]; int res = numbers.fold(numbers.first, (acc, item) => item > acc ? item : acc); print(res); }

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

5

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

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