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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。