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
廣告