Reduce:
Swift中reduct在Array类中的定义为
reduce(initial: U, combine: (U, T) -> U) -> U
接收两个参数,一个为类型U的初始值,另一个为把类型为U的元素和类型为T的元素组合成一个类型为U的值的函数。最终结果整个数组就变成了一个类型为U的值。
在事例中U和T是Int,初始值是0,combine函数计算两个Int之和。
reduce函数可以将一个元素和一个数组内的所有元素进行加减乘除,假如我有一个数组[1,2,3,4,5]。我想把他们依次叠加或者依次相乘。传统上来说我们会用遍历数组的方法:
var sum = 0
let mArray = [1,2,3,4,5]
for i in mArray {
sum = i+sum
}
但是用reduce我们就可以写成这样:
let mArray = [1,2,3,4,5]
let sum = mArray.reduce(0,{$0+$1})
reduce中(0,{$0+$1})代表的是和哪个数做什么处理,reduce(0,{$0+$1})的意思就是0+1+2+3+4+5。如果reduce(n,{$0*$1})就是n*1*2*3*4*5。这里$0和$1的意义不同,$0代表元素计算后的结果,$1代表元素,n代表初始化值,在这里可以理解为 $