fold
inline fun <T, R> Array<out T>.fold( initial: R, operation: (acc: R, T) -> R ): R
inline fun <R> ByteArray.fold( initial: R, operation: (acc: R, Byte) -> R ): R
inline fun <R> ShortArray.fold( initial: R, operation: (acc: R, Short) -> R ): R
inline fun <R> IntArray.fold( initial: R, operation: (acc: R, Int) -> R ): R
inline fun <R> LongArray.fold( initial: R, operation: (acc: R, Long) -> R ): R
inline fun <R> FloatArray.fold( initial: R, operation: (acc: R, Float) -> R ): R
inline fun <R> DoubleArray.fold( initial: R, operation: (acc: R, Double) -> R ): R
inline fun <R> BooleanArray.fold( initial: R, operation: (acc: R, Boolean) -> R ): R
inline fun <R> CharArray.fold( initial: R, operation: (acc: R, Char) -> R ): R
@ExperimentalUnsignedTypes inline fun <R> UIntArray.fold( initial: R, operation: (acc: R, UInt) -> R ): R
@ExperimentalUnsignedTypes inline fun <R> ULongArray.fold( initial: R, operation: (acc: R, ULong) -> R ): R
@ExperimentalUnsignedTypes inline fun <R> UByteArray.fold( initial: R, operation: (acc: R, UByte) -> R ): R
@ExperimentalUnsignedTypes inline fun <R> UShortArray.fold( initial: R, operation: (acc: R, UShort) -> R ): R
Накапливает значение, начиная со значения initial и применяя операцию operation слева направо к текущему накопительному значению и каждому элементу.
Возвращает указанное значение initial, если массив пустой.
Параметры
operation - функция, которая принимает текущее накопительное значение и элемент и вычисляет следующее накопительное значение.
inline fun <T, R> Iterable<T>.fold( initial: R, operation: (acc: R, T) -> R ): R
Накапливает значение, начиная со значения initial и применяя операцию operation слева направо к текущему накопительному значению и каждому элементу.
Возвращает указанное значение initial, если коллекция пустая.
Параметры
operation - функция, которая принимает текущее накопительное значение и элемент и вычисляет следующее накопительное значение.
inline fun <T, K, R> Grouping<T, K>.fold( initialValueSelector: (key: K, element: T) -> R, operation: (key: K, accumulator: R, element: T) -> R ): Map<K, R>
Группирует элементы из источника Grouping по ключу и применяет операцию operation к элементам каждой группы последовательно, передавая ранее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в новом map. Начальное значение аккумулятора предоставляет функция initialValueSelector.
fun main(args: Array<String>) {
//sampleStart
val fruits = listOf("cherry", "blueberry", "citrus", "apple", "apricot", "banana", "coconut")
val evenFruits = fruits.groupingBy { it.first() }
.fold({ key, _ -> key to mutableListOf<String>() },
{ _, accumulator, element ->
accumulator.also { (_, list) -> if (element.length % 2 == 0) list.add(element) }
})
val sorted = evenFruits.values.sortedBy { it.first }
println(sorted) // [(a, []), (b, [banana]), (c, [cherry, citrus])]
//sampleEnd
}Параметры
initialValueSelector - функция, которая предоставляет начальное значение аккумулятора для каждой группы. Она вызывается с параметрами:
operation - функция, которая вызывается для каждого элемента со следующими параметрами:
Возвращает Map, сопоставляющий ключ каждой группы с результатом накопления элементов группы.
inline fun <T, K, R> Grouping<T, K>.fold( initialValue: R, operation: (accumulator: R, element: T) -> R ): Map<K, R>
Группирует элементы из источника Grouping по ключу и применяет operation к элементам каждой группы последовательно, передавая ранее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в новом map. Начальное значение аккумулятора — это то же самое initialValue для каждой группы.
fun main(args: Array<String>) {
//sampleStart
val fruits = listOf("apple", "apricot", "banana", "blueberry", "cherry", "coconut")
// collect only even length Strings
val evenFruits = fruits.groupingBy { it.first() }
.fold(listOf<String>()) { acc, e -> if (e.length % 2 == 0) acc + e else acc }
println(evenFruits) // {a=[], b=[banana], c=[cherry]}
//sampleEnd
}Параметры
operation - функция, которая вызывается для каждого элемента со следующими параметрами:
Возвращает Map, сопоставляющий ключ каждой группы с результатом накопления элементов группы.
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/fold.html