天天看點

Swift3.0帶來的變化彙總系列三——函數和閉包寫法上的微調

一、函數方面

   Swift3.0相比Swift2.2的版本在API上做了大量的修改,代碼風格也更加統一。在函數方面,Swift3.0中做的最大修改是修改了内部名稱與外部名稱的預設規則。

   在Swift2.2中,函數參數清單的第一個參數如果開發者不手動設定外部名稱,預設是匿名的,除第一個參數以外的其他參數,開發者如果不設定外部名稱,預設外部名稱是和内部名稱相同的,是以在調用函數時,代碼常常是這樣的:

//多參數函數Swift2.2中 第一個參數預設匿名,其他參數預設内部命名與外部命名相同

func myFunc5(param1: Int,param2: Int,param3: Int) {

   //這裡使用的param1,param2,param3是參數的内部命名

   param1+param2+param3

}

//調用函數的參數清單中使用的param2和param3為外部命名

myFunc5(1, param2: 2, param3: 3)

Swift3.0中将這一規則修改為:如果開發者不設定函數中參數的外部名稱,則全部參數都預設外部名稱和内部名稱相同,上面相同的代碼,在Swift3.0的環境下是下面這樣的:

//多參數函數 預設内部命名與外部命名相同

//調用函數的參數清單中使用的param1、param2和param3為外部命名

//swift3.0

myFunc5(param1: 1, param2: 2, param3: 3)

Swift3.0在函數參數名方面的微調使得函數的參數名規則更加統一也更加符合Swift語言的風格。

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

//在函數内部修改參數變量的值

//swift2.2

func myFunc12(inout param:Int){

   param+=1

func myFunc12( param:inout Int){

有關Swift中函數的更多内容,可以在如下部落格連接配接中找到:

http://my.oschina.net/u/2340880/blog/674616

二、閉包方面

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

//逃逸閉包

//func myFunc(@noescape closure:(Int,Int)->Bool){

//    

//}

func myFunc( closure:@noescape(Int,Int)->Bool){

//自動閉包

//func myFunc2(@autoclosure(escaping) closure:()->Bool)  {

func myFunc2( closure:@autoclosure(escaping)()->Bool)  {

關于Swift中閉包的更多内容,可以在如下部落格連結中找到:

http://my.oschina.net/u/2340880/blog/675233

繼續閱讀