Функция fold
Функция fold выполняет свертку элементов коллекции
в одно значение. Она принимает начальное значение initial
и функцию operation, которая последовательно применяется
к каждому элементу коллекции и текущему значению аккумулятора.
Работает с Array, List, Set и другими
коллекциями, реализующими интерфейс Iterable.
Импорт
import kotlin.collections.fold
Синтаксис
inline fun <T, R> Iterable<T>.fold(
initial: R,
operation: (acc: R, T) -> R
): R
inline fun <T, R> Array<T>.fold(
initial: R,
operation: (acc: R, T) -> R
): R
Пример
Вычислим сумму всех элементов массива чисел:
val numbers = arrayOf(1, 2, 3, 4, 5)
val sum = numbers.fold(0) { acc, num -> acc + num }
println(sum)
Результат выполнения кода:
Int 15
Пример
Объединим все элементы списка строк в одну строку:
val words = listOf("a", "b", "c", "d", "e")
val combined = words.fold("") { acc, word -> acc + word }
println(combined)
Результат выполнения кода:
String "abcde"
Пример
Найдем максимальное значение в множестве чисел:
val numbersSet = setOf(10, 5, 8, 15, 3)
val max = numbersSet.fold(Int.MIN_VALUE) { acc, num ->
if (num > acc) num else acc
}
println(max)
Результат выполнения кода:
Int 15
Пример
Вычислим произведение всех элементов с начальным значением 1:
val nums = listOf(2, 3, 4)
val product = nums.fold(1) { acc, num -> acc * num }
println(product)
Результат выполнения кода:
Int 24
Смотрите также
-
функцию
reduce,
которая выполняет свертку без начального значения