写点什么

Swift 3 来了!

  • 2016-09-25
  • 本文字数:835 字

    阅读完需:约 3 分钟

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

2016-09-25 19:003561
用户头像

发布了 218 篇内容, 共 73.8 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

音频的价值、AI Codec 的意义与算法能力的边界丨一期一会 • 音频工程师专场

声网

音频技术 一期一会

中国经济网:“元宇宙”炙手可热

CECBC

Elephant Swap的LaaS方案优势分析,致eToken表现强势

BlockChain先知

从源码上学习 MockMvc 的使用

安逸的咸鱼

Java 源码 Mock测试框架 7月月更

Docker 安装 Nginx 部署前端项目

宁在春

nginx Docker Vue 7月月更

zookeeper-运行期间的leader选举与observer

zarmnosaj

7月月更

【刷题记录】17. 电话号码的字母组合

WangNing

7月月更

Ansible项目最佳实践

穿过生命散发芬芳

ansible 7月月更

一个15年ABAP老兵的建议:了解这些基础知识,对ABAP开发有百利而无一害

汪子熙

后台开发 SAP abap Netweaver 7月月更

在 SAP 云平台上部署和运行 Docker 应用

汪子熙

Docker Kubernetes 云原生 SAP 7月月更

[ kitex 源码解读 ] Kitex 扩展性设计思路

baiyutang

Go golang 云原生 微服务框架 kitex

React函数组件详解

恒山其若陋兮

7月月更

Elephant Swap的LaaS方案优势分析,致eToken表现强势

股市老人

Python干货篇——列表及列表常用内置函数

Java学术趴

7月日更

快速搭建个人博客网站——Hexo

空城机

Hexo 个人博客 7月月更

Vue Cli Study

程序员海军

vuecli 7月月更

用 React 结合 SAP UI5 Web Components 来开发 SAP Fiori 应用

汪子熙

JavaScript 前端开发 SAP SAP UI5 7月月更

另类加法与走方格的方案数

未见花闻

7月月更

振奋人心!元宇宙!下一代互联网的财富风口

CECBC

Envoy分布式链路追踪

阿泽🧸

envoy 7月月更

附答案 | 最强Python面试题之Python基础题(1)

KEY.L

7月月更

超干货!彻底搞懂单工、半双工、全双工的区别与联系

wljslmz

网络技术 7月月更 通信模式 双工

【愚公系列】2022年07月 Java教学课程 06-常量

愚公搬代码

7月月更

元宇宙浪潮震撼来袭,抓住时机,齐心协力

CECBC

机器学习-集成学习

AIWeker

机器学习 7月月更

SeekTiger的Okaleido有大动作,生态通证STI会借此爆发?

股市老人

数据中台建设误区

奔向架构师

数据中台 7月月更

深浅拷贝

Jason199

js 深拷贝 浅拷贝 7月月更

Swift 3来了!_开源_Sergio De Simone_InfoQ精选文章