日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swift 烧脑体操(三) - 高阶函数

發(fā)布時(shí)間:2024/9/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift 烧脑体操(三) - 高阶函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

\\

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。