如果你觉得苹果的Swift语言没有赶上趟,那就要重新审视这一观点了!Xcode 7.1 Beta 2版本已经支持Swift 2.1了。我没有必要在此事无巨细一一列举,你随时可以自行查看其发布说明的。
互操作性和数据类型
- 从C语言中引入的枚举类型自动遵循Equatable协议。所以用于样式匹配的开关语句(switch)目前不再强制去写扩展(extension)声明和操作符(operator)。
- C语言中的非匿名联合体(union)被作为结构体(struct)引入。结构体中的每一个字段与联合体中的字段相对应。Swift中的结构体大概是用来维持一种能力的,即使用联合体给底层同一数据位(bit)投影不同的字节或字。但我还没验证过Swift结构体的域(field)是否会用同一个位进行存储。
- C语言结构体中,相对鲜为人知的位域(bitfield)也被引入了Swift,能够使用了。
- dispatch_block_t变回了@convention(block) () -> Void的样子,因此 dispatch_block_create又能正常工作了。
令人欣喜的特性
协变性和逆变性
函数和闭包目前都具有协变性(covariance)和逆变性(contravariance)。
这一奇特的性质表示可以通过Any -> Int这样的转换,得到String -> Any这样的结果。
换句话说,当返回类型的派生程度较目标类型大时,闭包的参数派生程度就较目标类型的小。想一想这是合理的……如果函数可以接受(Any,Any)类型的参数,那么它一定能够接受(String,Int)和(AnyObject,NSURLRe-quest)类型的参数。如果目标类型是AnyObject,那么UIButton肯定也没问题。
修复的问题
已知的问题
个人说明
紧张的日程外加生病,处理事情忙得不可开交。但我期待着恢复定期写博客的状态。熬了一段时间后,有几篇文章马上要完成了。一些是关于Swift的文章,另外一些是更泛泛的内容。
(翻译/白云鹏 友情审校/张挥戈)
作者简介:Russ Bishop,全能型程序员,使用C#、Objective-C和Swift语言编程,开发了奇特的应用Storm Sim Free。
译者简介:白云鹏,移动应用开发者,个人博客:http://baiyunpeng.com。
原文链接:https://www.f2er.com/swift/325028.html