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

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

1、函數方面

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

    在Swift2.2中,函數參數列表的第一個參數若是開發者不手動設置外部名稱,默認是匿名的,除第一個參數之外的其餘參數,開發者若是不設置外部名稱,默認外部名稱是和內部名稱相同的,所以在調用函數時,代碼經常是這樣的:api

//多參數函數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的環境下是下面這樣的:閉包

//多參數函數 默認內部命名與外部命名相同
func myFunc5(param1: Int,param2: Int,param3: Int) {
    //這裏使用的param1,param2,param3是參數的內部命名
    param1+param2+param3
}
//調用函數的參數列表中使用的param一、param2和param3爲外部命名
//swift3.0
myFunc5(param1: 1, param2: 2, param3: 3)

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

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

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

有關Swift中函數的更多內容,能夠在以下博客鏈接中找到:.net

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

2、閉包方面

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

//逃逸閉包
//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)  {
    
}

關於Swift中閉包的更多內容,能夠在以下博客連接中找到:開發

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

 

專一技術,熱愛生活,交流技術,也作朋友。

——琿少 QQ羣:203317592

相關文章
相關標籤/搜索