Swift面试题之 高阶函数

高阶函数本质上也是函数,有两个特点:1.接受函数或者是闭包作为参数。2.返回值是一个函数或者是闭包。

这些函数我们常常用来做用于 Array,Set,Dictionary中的每一个元素。
 

map、flatMap、reduce、CompactMap、filter、

 

map 高阶函数

 

let arr  = [[1,2,3],[4,5,6]]

let result = arr.map{$0}

可以找到苹果的源码,找到 map 函数的源码,

 

对每一个元素执行 闭包表达式操作,定义了一个 result 的 数组类型变量。result然后拼接,然后返回当前元素。

 

reduce 高阶函数 

 

let numbers = [1,2,3]

let result = numbers.reduce(10, +)

print(result)

打印结果:16.

reduce  数组里所有的元素都跟 基础值10 做 + 操作。

源码分析,

 

对集合里每个元素,执行操作,然后返回给累加器。

reduce 灵活应用。面试题例子: 找数组中最大值,用 reduce去查找

 

let result = [1,2,3,4,5,6].reduce(0) {

        return $0 < $1 ? $1 : $0

}

// 逆序数组

let result = [1,2,3,4,5,6].reduce([Int]()) {

    return [$1] + $0

}

print(result)

打印 [6,5,4,3,2,1]

面试官在考察高阶函数一般会出一个题让用高阶函数去解答。reduce问的比较多。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章