Swift函數(shù)介紹和使用

函數(shù)的定義

1.函數(shù)的格式

func + 函數(shù)名(參數(shù)1,參數(shù)2,……) + -> +返回值

func pi() -> Double {

?? ?return 3.14

}

func?pi(v1:Int, v2:Int)->Int{

print(v1+v2)

?? ?returnv1+v2

}

形參默認(rèn)是let,也只能是let

2.無(wú)返回值的寫法

func pi() ?{

? ?print("hello")

}

func pi() -> (){

?? ?print("hello")

}

func pi() -> void{

?? ?print("hello")

}

3.函數(shù)的隱式返回,即系有返回值,但是省略return也是可以的.但是整個(gè)函數(shù)體是一個(gè)單一表達(dá)式,那么函數(shù)會(huì)隱式返回整個(gè)表達(dá)式

func pi(num1:Int,num2:Int) -> Int {

?? ?num1 + num2

}

4.利用元祖實(shí)現(xiàn)多參數(shù)的返回,這個(gè)可以對(duì)比OC的block的多參數(shù)返回

func?math2(num1:Int, num2:Int) -> (num3:Int, num3:Int, num4:Int){

?? ?letnum5 = num1 + num2;

? ? return? (num5, num1-num2, num5 >>1)

}

5.參數(shù)的標(biāo)簽.標(biāo)簽的作用可以使得代碼更加易懂

func playGame(at time:String){

print("location is \(house)")

}

playGame(at : "09:30" )

可以使用下劃線,省略標(biāo)簽

func sum(_ v1 : Int, _v2:Int) -> Int{

v1+v2

}

sum(2,3)

6.給參數(shù)設(shè)定參數(shù)值

func sum(v1:Int = 10, v2:Int = 9) -> Int{

let v1+v2

}

sum()//輸出了19

需要注意的是swift底層是C++,C++參數(shù)是右往左邊設(shè)置的。但是swift是參數(shù)標(biāo)簽,就沒(méi)有這個(gè)限制。但是省略參數(shù)標(biāo)簽時(shí)候需要特別注意,避免出錯(cuò)。如下圖,在調(diào)用sum2(v2:10)時(shí)候,發(fā)現(xiàn)v2是不能省略參數(shù)標(biāo)簽的


7.可變參數(shù).



print其實(shí)就是個(gè)多參數(shù)的方法



一個(gè)函數(shù)最多只能有一個(gè)多參數(shù),而且緊跟在多參數(shù)后面的參數(shù)的標(biāo)簽不能省略

8.輸入輸出參數(shù)

可以用intout定義一個(gè)輸入輸出參數(shù):在函數(shù)內(nèi)部修改外部參數(shù)的值。類似OC的指針傳遞


9.函數(shù)的重載

規(guī)則:函數(shù)名相同

參數(shù)個(gè)數(shù),參數(shù)類型,參數(shù)標(biāo)簽不同算重載;返回值與函數(shù)重載無(wú)關(guān)


10.內(nèi)聯(lián)函數(shù)

將函數(shù)展開為函數(shù)體。如果開始了編譯器優(yōu)化,那么編譯器默認(rèn)會(huì)自動(dòng)把某些函數(shù)變?yōu)閮?nèi)聯(lián)函數(shù)


但是有些情況是不會(huì)變?yōu)閮?nèi)聯(lián)函數(shù)

函數(shù)體比較長(zhǎng)(造成代碼臃腫,代碼體積變大)

包含遞歸(死循環(huán))

動(dòng)態(tài)派發(fā)(多態(tài),例如父類和子類都有某個(gè)方法,編譯器在編譯階段不能確認(rèn)是當(dāng)前類在運(yùn)行時(shí)候執(zhí)行父類還是子類的方法)。

編譯器在release模式已經(jīng)開啟了內(nèi)聯(lián)模式,沒(méi)必要自己手動(dòng)去內(nèi)聯(lián)


11.函數(shù)作為函數(shù)的參數(shù)


12.函數(shù)作為函數(shù)的返回值。這種類型的函數(shù)叫做高階函數(shù)


13.給函數(shù)起別名

14.函數(shù)嵌套函數(shù)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容