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

相关文章
相关标签/搜索