将数组元素与 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: +)