BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Swift 3来了!

| 作者 Sergio De Simone 关注 12 他的粉丝 ,译者 刘嘉洋 关注 0 他的粉丝 发布于 2016年9月26日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Apple工程师Ted Kremenek在博文中写道,Swift 3.0已发布。这次发布的新版本中对于语言及其标准库进行了大量的修改,增加了Linux端口,并首次官方发布了Swift Package Manager

自2015年底Apple开源Swift之后,Swift 3是首个发布的主要版本,该版本实现了Swift演变过程中所讨论并通过的90多个提议。

Swift 3.0中的一系列变化旨在依照Swift API Design 指南,通过去除一部分可能被视作遗留下来的Objective-C的内容,来清理API。这个举措可以有效缩短Swift的语法,并增强一致性:

需要命名函数和方法的第一个参数以实现写操作(除非用_显式省略):

aString.write(toFile: "filename", atomically: true, encoding: NSUTF8StringEncoding)
UIFont.preferredFont(forTextStyle: UIFontTextStyleSubheadline) 

而不是:

aString.writeToFile("filename", atomically: true, encoding: NSUTF8StringEncoding)
UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline) 

省略不必要的词:

UIColor.red()

而不是:

UIColor.redColor()

当上述的两条规则同时采纳的时候会产生更好的效果,例如下面的语句所示:

aString.stringByReplacingOccurrencesOfString("A", withString: "a")

变成:

aString.replacingOccurrences(of: "A", with: "a")

Swift 3改进的另外一个版块是处理属于多个Cocoa框架的C功能。比如说所有以CGContext、CGAffineTansform、CGPDFDocument等开始的Core Graphics功能,现在可以被称为是对象的方法:

if let ctx = UIGraphicsGetCurrentContext() {
ctx.setFillColor(UIColor.red().cgColor)
...
}
CGAffineTransform(translationX: 64, y: 0)

Swift 3中还对语法进行了改变,以清理语言。比如说,去除了++和 --运算符,去除了函数的参数中的var,去除了C语言中的循环条件和增量器,这些语法带来的弊大于利。

Swift 3的变化列表涵盖了太多内容,很抱歉我们无法在一篇文章中涵盖所有的内容。你可以在官方的公告中查看所有的更新细节。

查看英文原文Swift 3 is Out

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT