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