- Swift 4從零到精通iOS開發(fā)
- 張益琿
- 541字
- 2019-12-09 14:31:26
5.4 將閉包作為參數(shù)傳遞時的寫法優(yōu)化
通過前面章節(jié)的學(xué)習(xí),讀者應(yīng)該可以感受到Swift語言在設(shè)計上追求的簡潔與高效,開發(fā)者在將閉包作為參數(shù)傳遞進(jìn)函數(shù)時,也可以在標(biāo)準(zhǔn)形式上做許多優(yōu)化。我們依然以學(xué)生數(shù)組排序的代碼為例,省略閉包返回值類型的寫法如下:

閉包作為函數(shù)參數(shù)時的參數(shù)類型可以省略,是因為在函數(shù)聲明時,閉包參數(shù)中已經(jīng)指定了參數(shù)的類型,編譯器可以進(jìn)行自動推斷。
如果閉包只有一行代碼組成,return關(guān)鍵字也可以進(jìn)行省略,默認(rèn)會將此行代碼的執(zhí)行結(jié)果返回。需要注意,只有將閉包作為函數(shù)的參數(shù)才可以如此簡化,示例如下:

經(jīng)過簡化后的閉包結(jié)構(gòu)已經(jīng)簡潔了很多,其實還可以繼續(xù)簡化。如上代碼中,開發(fā)者使用index和nextIndex來標(biāo)識閉包中的參數(shù),實際上,當(dāng)此閉包作為函數(shù)的參數(shù)時,閉包的參數(shù)列表會自動創(chuàng)建一組參數(shù),參數(shù)名會以$0、$1這樣的結(jié)構(gòu)依次類推。因此,開發(fā)者也可以使用編譯器默認(rèn)生成的參數(shù)名而不必指定參數(shù)名。表現(xiàn)在代碼寫法上,開發(fā)者也可以將參數(shù)列表和閉包關(guān)鍵字in省略,優(yōu)化后的代碼如下所示:

一步步簡化后的代碼與最開始的代碼模樣有很大的不同,Swift語言在這些細(xì)節(jié)上的處理使開發(fā)者可以十分靈活地編寫代碼。然而這些代碼的簡化操作對于初學(xué)者來說可能會難于理解,讀者務(wù)必要將本節(jié)的簡化過程熟練應(yīng)用,在開發(fā)中需要使用各種各樣的閉包時,才能游刃有余。
- ASP.NET MVC4框架揭秘
- Apache Spark 2 for Beginners
- INSTANT Weka How-to
- Mastering matplotlib
- 深入淺出DPDK
- EPLAN實戰(zhàn)設(shè)計
- Oracle Exadata專家手冊
- Swift 4 Protocol-Oriented Programming(Third Edition)
- 微信小程序開發(fā)與實戰(zhàn)(微課版)
- 深入理解C指針
- GameMaker Essentials
- 深入淺出Go語言編程
- Kotlin Programming By Example
- Mastering Gephi Network Visualization
- 青少年學(xué)Python(第2冊)