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

5.2 函數(shù)的類型與函數(shù)嵌套

前面章節(jié)有提到,Swift語(yǔ)言中每一個(gè)函數(shù)都有其特定的類型。因此,開(kāi)發(fā)者也可以像聲明普通變量那樣來(lái)聲明一個(gè)函數(shù)變量,同樣也可以對(duì)此變量進(jìn)行賦值、調(diào)用等操作。將函數(shù)作為數(shù)據(jù)類型這種語(yǔ)言設(shè)計(jì)思路有強(qiáng)大的優(yōu)勢(shì),這將允許開(kāi)發(fā)者將一個(gè)函數(shù)作為另一個(gè)函數(shù)的參數(shù)或者返回值,大大增強(qiáng)了編程的靈活性。

函數(shù)變量的聲明及賦值示例代碼如下:

    //聲明一個(gè)函數(shù)變量
    var addFunc:(Int,Int)->Int
    //對(duì)函數(shù)變量進(jìn)行賦值
    addFunc = {(param1:Int,param2:Int) in return param1+param2}
    //調(diào)用函數(shù)變量
    addFunc(2,3)

函數(shù)變量的類型由參數(shù)和返回值決定,參數(shù)和返回值相同的函數(shù)類型就相同。上面示例代碼中對(duì)函數(shù)變量的賦值采用了閉包的方式,閉包的實(shí)質(zhì)是一段有具體功能的代碼塊,其結(jié)構(gòu)為{(param1,param2,…) in代碼塊},其最外面由大括號(hào)包圍,內(nèi)部小括號(hào)為參數(shù)列表,in為閉包關(guān)鍵字,之后需要編寫實(shí)現(xiàn)相應(yīng)功能的代碼。關(guān)于閉包的更多內(nèi)容,后面章節(jié)會(huì)詳細(xì)介紹。

也可以通過(guò)一個(gè)函數(shù)來(lái)對(duì)函數(shù)變量進(jìn)行賦值,示例如下:

函數(shù)也可以作為另一個(gè)函數(shù)的參數(shù),示例代碼如下:

如上代碼所示,這種將函數(shù)作為參數(shù)的編程方式應(yīng)用十分廣泛,在Objective-C語(yǔ)言中,這種語(yǔ)法結(jié)構(gòu)被稱為block。在處理一些回調(diào)操作時(shí),例如網(wǎng)絡(luò)回調(diào)、子線程異步處理回調(diào)等場(chǎng)景中,使用這種編程方式將十分簡(jiǎn)潔優(yōu)美。

函數(shù)可以作為參數(shù),同樣其也可以作為返回值來(lái)使用,示例代碼如下:

上面的演示代碼中,在函數(shù)內(nèi)部創(chuàng)建了閉包并將其返回,由于Swift語(yǔ)言是支持進(jìn)行函數(shù)嵌套的,實(shí)際上開(kāi)發(fā)者也可以在函數(shù)內(nèi)部再次創(chuàng)建函數(shù),示例如下:

提示

函數(shù)也有其作用域。所謂嵌套函數(shù),是指在函數(shù)內(nèi)部再次創(chuàng)建一個(gè)子函數(shù),子函數(shù)只能在父函數(shù)內(nèi)部調(diào)用,不可以在父函數(shù)外部調(diào)用,但是可以作為返回值傳遞到父函數(shù)外部。

主站蜘蛛池模板: 剑河县| 吉水县| 山丹县| 水城县| 高淳县| 汾阳市| 炎陵县| 阳春市| 墨脱县| 类乌齐县| 大竹县| 老河口市| 邛崃市| 涪陵区| 称多县| 通江县| 苏尼特左旗| 如皋市| 泾源县| 蓬安县| 河北省| 托里县| 玉山县| 奈曼旗| 神木县| 新野县| 泗洪县| 阿拉尔市| 吴川市| 亳州市| 广西| 凤冈县| 南城县| 南通市| 德阳市| 泸定县| 博爱县| 富阳市| 渑池县| 拉萨市| 垣曲县|