АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
437 of 1310 menu
В течении недели будет ОБНОВЛЕНИЕ УЧЕБНИКОВ PHP. Поменяется структура! Подробнее по ссылке.

Функция reduce

Функция reduce выполняет агрегацию элементов коллекции, последовательно применяя операцию к элементам и накапливая результат. Принимает лямбда-функцию с двумя параметрами: аккумулятор и текущий элемент. Возвращает финальное значение аккумулятора после обработки всех элементов. Работает с массивами Array, списками List и множествами Set.

Импорт

import kotlin.collections.reduce

Синтаксис

inline fun <S, T : S> Array<out T>.reduce( operation: (acc: S, T) -> S ): S
inline fun <S, T : S> Iterable<T>.reduce( operation: (acc: S, T) -> S ): S

Пример

Найдем сумму всех элементов массива чисел:

val numbers = arrayOf(1, 2, 3, 4, 5) val res = numbers.reduce { acc, num -> acc + num } println(res)

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

Int 15

Пример

Найдем произведение всех элементов списка:

val numbers = listOf(1, 2, 3, 4, 5) val res = numbers.reduce { acc, num -> acc * num } println(res)

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

Int 120

Пример

Объединим все строки множества в одну:

val words = setOf("Hello", " ", "World", "!") val res = words.reduce { acc, word -> acc + word } println(res)

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

String "Hello World!"

Пример

Найдем максимальный элемент в массиве:

val numbers = arrayOf(10, 5, 25, 3, 15) val res = numbers.reduce { acc, num -> if (num > acc) num else acc } println(res)

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

Int 25

Важно

Функция reduce бросает исключение UnsupportedOperationException при вызове на пустой коллекции. Для безопасной работы с возможными пустыми коллекциями используйте reduceOrNull:

val emptyList = emptyList<Int>() val res = emptyList.reduceOrNull { acc, num -> acc + num } println(res)

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

null

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

  • функцию fold,
    которая принимает начальное значение аккумулятора