Swift 烧脑体操(三) - 高阶函数
前言
\\Swift 其實比 Objective-C 復(fù)雜很多,相對于出生于上世紀(jì) 80 年代的 Objective-C 來說,Swift 融入了大量新特性。這也使得我們學(xué)習(xí)掌握這門語言變得相對來說更加困難。不過一切都是值得的,Swift 相比 Objective-C,寫出來的程序更安全、更簡潔,最終能夠提高我們的工作效率和質(zhì)量。
\\Swift 相關(guān)的學(xué)習(xí)資料已經(jīng)很多,我想從另外一個角度來介紹它的一些特性,我把這個角度叫做「燒腦體操」。什么意思呢?就是我們專門挑一些比較費腦子的語言細節(jié)來學(xué)習(xí)。通過「燒腦」地思考,來達到對 Swift 語言的更加深入的理解。
\\這是本體操的第三節(jié),練習(xí)前請做好準(zhǔn)備運動,保持頭腦清醒。
\\準(zhǔn)備運動:基礎(chǔ)知識
\\在上一節(jié)里面,我們其實已經(jīng)涉及到了高階函數(shù)了。在?Wikipedia?中,是這么定義高階函數(shù)(higher-order function)的,如果一個函數(shù):
\\- 接受一個或多個函數(shù)當(dāng)作參數(shù)\\t
- 把一個函數(shù)當(dāng)作返回值\
那么這個函數(shù)就被稱作高階函數(shù)。下面是一個簡單的排序的例子,在這個例子中,傳進去的參數(shù)就是一個函數(shù):
\\\let numbers = [1, 4, 2, 3]\let res = numbers.sort {\ $0 \u0026lt; $1\}\\\Trailing Closure Syntax
\\上面的代碼看著不像是函數(shù)作為參數(shù)存在,這是因為 Swift 的 Trailing Closure 特性。Swift 允許當(dāng)函數(shù)的最后一個參數(shù)是閉包的時候,以緊跟?{ }?的形式,將最后一個閉包的內(nèi)容附加在函數(shù)后面。
\\所以,以下兩行代碼是等價的:
\\\// 正常寫法,函數(shù)是作為 sort 的參數(shù)\arr.sort({ $0 \u0026lt; $1 })\\// Trailing Closure 寫法,更簡潔明了\arr.sort { $0 \u0026lt; $1 } \\\常見用法示例
\\高階函數(shù)在 Swift 語言中有大量的使用場景,我們先來看一看常見的用法:
\\遍歷
\\我們可以用?map?方法來對數(shù)組元素進行某種規(guī)則的轉(zhuǎn)換,例如:
\\\let arr = [1, 2, 4]\// arr = [1, 2, 4]\\let brr = arr.map {\ \"No.\" + String($0)\}\// brr = [\"No.1\總結(jié)
以上是生活随笔為你收集整理的Swift 烧脑体操(三) - 高阶函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见的显示器分辨率
- 下一篇: 【Android】12.3 在当前Act