官术网_书友最值得收藏!

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ā)中需要使用各種各樣的閉包時,才能游刃有余。

主站蜘蛛池模板: 襄垣县| 丽江市| 深泽县| 鞍山市| 阿坝县| 通海县| 枣阳市| 临夏县| 嵊泗县| 冕宁县| 图木舒克市| 水城县| 凌云县| 民丰县| 左云县| 北宁市| 离岛区| 北辰区| 兴海县| 祥云县| 綦江县| 浦北县| 昌宁县| 永州市| 宜丰县| 偏关县| 尼勒克县| 澄城县| 五峰| 始兴县| 双辽市| 昌邑市| 滁州市| 杂多县| 长海县| 曲阳县| 玉林市| 刚察县| 丰城市| 伊宁市| 乐清市|