Swift3.0函數(shù)寫法上的微調(diào)

一、函數(shù)方面

Swift3.0相比Swift2.2的版本在API上做了大量的修改,代碼風(fēng)格也更加統(tǒng)一。在函數(shù)方面,Swift3.0中做的最大修改是修改了內(nèi)部名稱與外部名稱的默認(rèn)規(guī)則。

在Swift2.2中,函數(shù)參數(shù)列表的第一個參數(shù)如果開發(fā)者不手動設(shè)置外部名稱,默認(rèn)是匿名的,除第一個參數(shù)以外的其他參數(shù),開發(fā)者如果不設(shè)置外部名稱,默認(rèn)外部名稱是和內(nèi)部名稱相同的,因此在調(diào)用函數(shù)時,代碼常常是這樣的:

//多參數(shù)函數(shù)Swift2.2中 第一個參數(shù)默認(rèn)匿名,其他參數(shù)默認(rèn)內(nèi)部命名與外部命名相同
func myFunc5(param1: Int,param2: Int,param3: Int) { 
//這里使用的param1,param2,param3是參數(shù)的內(nèi)部命名 param1+param2+param3
}
//調(diào)用函數(shù)的參數(shù)列表中使用的param2和param3為外部命名
myFunc5(1, param2: 2, param3: 3)

Swift3.0中將這一規(guī)則修改為:如果開發(fā)者不設(shè)置函數(shù)中參數(shù)的外部名稱,則全部參數(shù)都默認(rèn)外部名稱和內(nèi)部名稱相同,上面相同的代碼,在Swift3.0的環(huán)境下是下面這樣的:

//多參數(shù)函數(shù) 默認(rèn)內(nèi)部命名與外部命名相同
func myFunc5(param1: Int,param2: Int,param3: Int) { 
//這里使用的param1,param2,param3是參數(shù)的內(nèi)部命名 param1+param2+param3
}
//調(diào)用函數(shù)的參數(shù)列表中使用的param1、param2和param3為外部命名//swift3.0
myFunc5(param1: 1, param2: 2, param3: 3)

Swift3.0在函數(shù)參數(shù)名方面的微調(diào)使得函數(shù)的參數(shù)名規(guī)則更加統(tǒng)一也更加符合Swift語言的風(fēng)格。

在函數(shù)方面,Swift3.0中做的另一項更改是關(guān)于inout參數(shù)的聲明方式,修改了inout關(guān)鍵字的聲明位置,Swift2.2與Swift3.0版本比如如下:

//在函數(shù)內(nèi)部修改參數(shù)變量的值
//swift2.2
func myFunc12(inout param:Int){ 
     param+=1
}
//swift3.0
func myFunc12( param:inout Int){ 
     param+=1
}

二、閉包方面

在閉包方面,Swift3.0版本中只對某些修飾符的位置做了修改。示例如下:

//逃逸閉包
//swift2.2
//func myFunc(@noescape closure:(Int,Int)->Bool){
// 
//}
//swift3.0
func myFunc( closure:@noescape(Int,Int)->Bool){}
//自動閉包
//swift2.2
//func myFunc2(@autoclosure(escaping) closure:()->Bool) {
// 
//}
func myFunc2( closure:@autoclosure(escaping)()->Bool) { }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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