Spec-Zone.ru › Kotlin 2

fold

kotlin-stdlib/kotlin.collections/fold

Версия Kotlin: 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

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

Возвращает указанное начальное значение, если массив пуст.

Параметры

operation

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


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

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

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

Параметры

operation

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


@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

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

Возвращает указанное начальное значение, если массив пуст.

Параметры

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

Возвращает

Map, связывающую ключ каждой группы с результатом накопления элементов этой группы.

Параметры

initialValueSelector

функция, задающая начальное значение аккумулятора для каждой группы. Она вызывается со следующими параметрами:

  • key: ключ группы;

  • element: первый встреченный элемент этой группы.

operation

функция, вызываемая для каждого элемента со следующими параметрами:

  • key: ключ группы, к которой принадлежит этот элемент;

  • accumulator: текущее значение аккумулятора группы;

  • element: накапливаемый элемент источника.

Примеры


fun main() { 
   //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
}

inline fun <T, K, R> Grouping<T, K>.fold(initialValue: R, operation: (accumulator: R, element: T) -> R): Map<K, R>

Группирует элементы источника Grouping по ключу, последовательно применяет операцию к элементам каждой группы, передавая в качестве аргументов ранее накопленное значение и текущий элемент, и сохраняет результаты в новой карте. Начальным значением аккумулятора для каждой группы служит одно и то же значение initialValue.

Возвращает

Map, связывающую ключ каждой группы с результатом накопления элементов этой группы.

Параметры

operation

функция, вызываемая для каждого элемента со следующими параметрами:

  • accumulator: текущее значение аккумулятора группы;

  • element: накапливаемый элемент источника.

Примеры


fun main() { 
   //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
}

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/fold.html

Spec-Zone.ru

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