Spec-Zone.ru › Kotlin 1.8

fold

kotlin-stdlib / kotlin.collections / fold
Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)
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 - функция, которая принимает текущее накопленное значение и элемент, и вычисляет следующее накопленное значение.

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)
inline fun <T, R> Iterable<T>.fold(
    initial: R, 
    operation: (acc: R, T) -> R
): R

Накапливает значение, начиная со значения initial, применяя operation слева направо к текущему накопленному значению и каждому элементу.

Возвращает указанное значение initial, если коллекция пустая.

Параметры

operation - функция, которая принимает текущее накопленное значение и элемент, и вычисляет следующее накопленное значение.

Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)
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 к элементам каждой группы последовательно, передавая предыдущее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в новой карте. Начальное значение накопителя предоставляется функцией 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, сопоставляющий ключ каждой группы с результатом накопления элементов группы.

Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)
inline fun <T, K, R> Grouping<T, K>.fold(
    initialValue: R, 
    operation: (accumulator: R, element: T) -> R
): Map<K, R>

Группирует элементы из источника Grouping по ключу и применяет operation к элементам каждой группы последовательно, передавая предыдущее накопленное значение и текущий элемент в качестве аргументов, и сохраняет результаты в новой карте. Начальное значение накопителя одинаковое 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–2023 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API