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