Swift3废除特性(二)
来源:互联网 发布:相处久了不爱了 知乎 编辑:程序博客网 时间:2024/05/05 13:52
3. 移除函数参数的 var 标记
在 Swift 函数中,参数默认是常量。过去可以在参数前加关键字 var 将其定义为变量,这样函数内部就可以对该参数进行修改(外部的参数任然不会被修改)。
var age = 22
add(age)
func add(var age:Int) {
age += 1
}
现在这种做法已经被废弃,Swift 3 不再允许开发者这样来将参数标记为变量了。
4. 所有函数参数都必须带上标签
过去如果一个函数有多个参数,调用的时候第一个参数无需带标签,而从第二个参数开始,必须要带标签。
let number = additive(8, b: 12)
func additive(a:Int, b:Int) -> Int{
return a + b
}
现在为了确保函数参数标签的一致性,所有参数都必须带上标签。
这个变化可能会造成我们的项目代码要进行较大的改动,毕竟涉及的地方很多。所以苹果又给出了一种不用给第一个参数带标签的解决方案。即在第一个参数前面加上一个下划线。
let number = additive(8, b: 12)
func additive(_ a:Int, b:Int) -> Int{
return a + b
}
这个只是方便我们代码从 Swift2 迁移到 Swift3 的一个折中方案,可以的话还是建议将所有的参数都带上标签。
5. 函数声明和函数调用都需要括号来包括参数
我们可以使用函数类型作为参数 ,对于一个参数是函数、返回值也是函数的函数。原来我们可能会这么写:
func g(a: Int -> Int) -> Int->Int { ... }
当这样非常难以阅读,很难看出参数在哪里结束,返回值又从哪里开始。在 Swift 3 中变成这么定义这个函数:
func g(a:(Int) -> Int) -> (Int) -> Int { ... }
6. Selector 不再允许使用 String
假设我们给按钮添加一个点击事件响应,点击后执行 tapped 函数。以前可以这么写:
button.addTarget(responder, action: "tapped", forControlEvents: .TouchUpInside)
但由于按钮的 selector 写的是字符串。如果字符串拼写错了,那程序会在运行时因找不到相关方法而崩溃。所以 Swift 3 将这种写法废除,改成 #selecor()。这样就将允许编译器提前检查方法名的拼写问题,而不用再等到运行时才发现问题。
button.addTarget(self, action:#selector(tapped), for:.touchUpInside)
- Swift3废除特性(二)
- Swift3废除特性(一)
- Swift3新增特性(二)
- iOS安全攻防(二十一):废除应用程序的ASLR特性
- Swift3新增特性(一)
- Swift3之函数(二)
- Swift3中的新特性
- 【swift3实战】2048 教程(二)
- iOS开发 Swift3新特性
- swift3.0集成友盟分享sdk_6.0.3(二)
- swift3自定义导航条(二)颜色处理
- swift3自定义下拉刷新控件(二)QQ弹簧效果
- Swift3
- swift3
- Java5新特性(二)
- Oracle Flashback特性(二)
- jdk新特性(二)
- OpenCV轮廓特性(二)
- CSDN在360浏览器中不能使用markdown吗?
- IOS自定义协议介绍
- jenkins maven svn 自动化部署安装
- nodejs中文件上传并限制图片大小
- 删除链表中重复的元素
- Swift3废除特性(二)
- 使用Atom与XDebug调试php程序
- Java程序员面试宝典3
- Restful
- Mysql常见错误及解决方式
- linux bash color text console
- 配置WifiConfiguration
- 理解OAuth 2.0
- Toast的使用方法大全