Spec-Zone.ru › Kotlin 1.7

foldTo

kotlin-stdlib / kotlin.collections / foldTo
Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)
inline fun <T, K, R, M : MutableMap<in K, R>> Grouping<T, K>.foldTo(
    destination: M, 
    initialValueSelector: (key: K, element: T) -> R, 
    operation: (key: K, accumulator: R, element: T) -> R
): M

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



fun main(args: Array<String>) {
//sampleStart
val fruits = listOf("cherry", "blueberry", "citrus", "apple", "apricot", "banana", "coconut")

val evenFruits = fruits.groupingBy { it.first() }
    .foldTo(mutableMapOf(), { key, _: String -> key to mutableListOf<String>() },
            { _, accumulator, element ->
                if (element.length % 2 == 0) accumulator.second.add(element)
                accumulator
            })

val sorted = evenFruits.values.sortedBy { it.first }
println(sorted) // [(a, []), (b, [banana]), (c, [cherry, citrus])]

evenFruits.clear() // evenFruits is a mutable map
//sampleEnd
}

Параметры

initialValueSelector -

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

  • key: ключ группы;
  • element: первый элемент, встречающийся в этой группе.

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

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

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

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

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

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



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() }
    .foldTo(mutableMapOf(), emptyList<String>()) { acc, e -> if (e.length % 2 == 0) acc + e else acc }

println(evenFruits) // {a=[], b=[banana], c=[cherry]}

evenFruits.clear() // evenFruits is a mutable map
//sampleEnd
}

Параметры

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

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

© 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-to.html

Spec-Zone.ru

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