高阶函数 Map,Flatmap,Filter,Reduce的用法
Map
map:map方法作用是把数组[T]通过闭包函数把每一个数组中的元素变成U类型的值,最后组成数组[U]。
定义如下:
func map(transform: (T) -> U) -> [U]
1 | func map<T, U>(xs: [T], f: T -> U) -> [U] |
将示例数组,每个数字都加10,获得一个新的数组:
1 | //map函数里面可以直接使用函数作为参数,这里采用函数的方式。 |
map不只是可以用来做简单的数值运算,还可以处理一些其他复杂操作,如:在数字后拼接字符串,返回新的数组
1 | resultArray = numberArray.map({"\($0)只"}) |
FlatMap
flatMap 更加强大,可以传入N个处理方法,将处理后得到数据,组合到同一个数组中
1 | resultArray = numberArray.flatMap({["\($0)个","\($0 )只"]}) |
Filter
filter就是筛选的功能,参数是一个用来判断是否筛除的筛选闭包,根据闭包函数返回的Bool值来过滤值。为True则加入到结果数组中。定义如下:func filter(includeElement: (T) -> Bool) -> [T]
找出数组中大于2的数
1 | var filteredArray : [Int] = [] |
reduce
reduce的作用给定一个类型为U的初始值,把数组[T]中每一个元素传入到combine的闭包函数里面,通过计算得到最终类型为U的结果值。
定义如下:
func reduce(initial: U, combine: (U, T) -> U) -> U
1 | func reduce<A, R>(arr: [A], _ initialValue: R, combine: (R, A) -> R) -> R |
计算数组中所有数字的和,积
1 | var sum = 0 |