Функция fold

Функция fold выполняет свертку элементов коллекции в одно значение. Она принимает начальное значение initial и функцию operation, которая последовательно применяется к каждому элементу коллекции и текущему значению аккумулятора. Работает с Array, List, Set и другими коллекциями, реализующими интерфейс Iterable.

Импорт

kotlinimport kotlin.collections.fold

Синтаксис

kotlininline fun <T, R> Iterable<T>.fold(
  initial: R, 
  operation: (acc: R, T) -> R
): R
kotlininline fun <T, R> Array<T>.fold(
  initial: R, 
  operation: (acc: R, T) -> R
): R

Пример

Вычислим сумму всех элементов массива чисел:

kotlinval numbers = arrayOf(1, 2, 3, 4, 5)
val sum = numbers.fold(0) { acc, num -> acc + num }
println(sum)

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

kotlinInt 15

Пример

Объединим все элементы списка строк в одну строку:

kotlinval words = listOf("a", "b", "c", "d", "e")
val combined = words.fold("") { acc, word -> acc + word }
println(combined)

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

kotlinString "abcde"

Пример

Найдем максимальное значение в множестве чисел:

kotlinval numbersSet = setOf(10, 5, 8, 15, 3)
val max = numbersSet.fold(Int.MIN_VALUE) { acc, num -> 
  if (num > acc) num else acc 
}
println(max)

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

kotlinInt 15

Пример

Вычислим произведение всех элементов с начальным значением 1:

kotlinval nums = listOf(2, 3, 4)
val product = nums.fold(1) { acc, num -> acc * num }
println(product)

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

kotlinInt 24

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

  • функцию reduce,
    которая выполняет свертку без начального значения