fold
所在位置是kotlin.collections.fold
,其相关用法介绍如下。
用法一
@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
用法二
用法三
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
}
输出:
[(a, []), (b, [banana]), (c, [cherry, citrus])]
参数
initialValueSelector
- 为每个组提供累加器初始值的函数。它使用参数调用:
返回一个Map,将每个组的键与累积组元素的结果相关联。
用法四
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
}
输出:
{a=[], b=[banana], c=[cherry]}
参数
返回一个Map,将每个组的键与累积组元素的结果相关联。
相关用法
- Kotlin foldTo用法及代码示例
- Kotlin forEach用法及代码示例
- Kotlin filterNot用法及代码示例
- Kotlin filterNotTo用法及代码示例
- Kotlin filterKeys用法及代码示例
- Kotlin flatten用法及代码示例
- Kotlin filterTo用法及代码示例
- Kotlin filterNotNull用法及代码示例
- Kotlin filterIsInstance用法及代码示例
- Kotlin filterIsInstanceTo用法及代码示例
- Kotlin findLast用法及代码示例
- Kotlin flatMap用法及代码示例
- Kotlin find用法及代码示例
- Kotlin firstNotNullOf用法及代码示例
- Kotlin firstNotNullOfOrNull用法及代码示例
- Kotlin filterNotNullTo用法及代码示例
- Kotlin filterIndexedTo用法及代码示例
- Kotlin filterValues用法及代码示例
- Kotlin filter用法及代码示例
- Kotlin flatMapIndexed用法及代码示例
- Kotlin filterIndexed用法及代码示例
- Kotlin associateBy用法及代码示例
- Kotlin all用法及代码示例
- Kotlin map用法及代码示例
- Kotlin reduceRight用法及代码示例
注:本文由纯净天空筛选整理自kotlinlang.org大神的英文原创作品 kotlin.collections.fold。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。