Kotlin 数组 - reduce() 函数



Kotlin 数组的 reduce() 函数用于累积或组合数组的所有元素为单个值,从第一个元素开始,使用二元运算符(由 lambda 函数指定)。

此函数从左到右将操作应用于当前累加器值和每个元素。

异常

如果数组为空,此函数将抛出“UnsupportedOperationException”异常。

语法

以下是 Kotlin 数组 reduce() 函数的语法:

inline fun <S, T : S> Array<out T>.reduce(
   operation: (acc: S, T) -> S
): S

参数

此函数接受一个 **operation**,它表示当前累加器值和一个元素,并计算下一个累加器值。

返回值

此函数返回一个列表,其中包含通过应用操作生成的连续累积值。

示例 1

以下是一个基本的示例,用于演示 reduce() 函数的使用:

fun main(args: Array<String>) {
   val numbers = arrayOf(1, 2, 3, 4, 5)
   val sum = numbers.reduce { acc, num -> acc + num }
   println("Sum of elements: $sum")
}

输出

以上代码生成以下输出:

Sum of elements: 15

示例 2

让我们看另一个例子。如果我们使用 reduce() 函数且数组为空,输出将会是什么?

fun main(args: Array<String>) {
   val numbers = arrayOf<Int>()
   val exec = numbers.reduce { acc, num -> acc }
   println("Single value: $exec")
}

输出

如果数组为空,以上代码将抛出异常。

Exception in thread "main" java.lang.UnsupportedOperationException: Empty array can't be reduced.

示例 3

下面的示例创建一个数组,并使用 **reduce()** 函数将所有元素累积到单个值。

fun main(args: Array<String>) {
   val strings = arrayOf<String>("a", "b", "c", "d", "e")
   val res = strings.reduce { acc, string -> acc + string }
   println("Single value: $res")
}

输出

以下是输出:

Single value: abcde
kotlin_arrays.htm
广告