將陣列元素與 reduce(組合)組合在一起
reduce(_:combine:)
可用於將序列的元素組合成單個值。它接受結果的初始值,以及應用於每個元素的閉包 - 它將返回新的累積值。
例如,我們可以使用它來對數字陣列求和:
let numbers = [2, 5, 7, 8, 10, 4]
let sum = numbers.reduce(0) {accumulator, element in
return accumulator + element
}
print(sum) // 36
我們將 0
傳遞給初始值,因為這是求和的邏輯初始值。如果我們傳入 N
的值,則得到的 sum
將是 N + 36
。傳遞給 reduce
的閉包有兩個論點。accumulator
是當前累計值,它被賦予閉包在每次迭代時返回的值。element
是迭代中的當前元素。
在這個例子中,我們將 (Int, Int) -> Int
閉包傳遞給 reduce
,它只是輸出兩個輸入的加法 - 我們實際上可以直接傳入+
運算子,因為運算子是 Swift 中的函式:
let sum = numbers.reduce(0, combine: +)