將陣列元素與 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: +)