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問的比較多。

 

 

 

 

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