【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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:003210
用户头像

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

关注

评论

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

高并发HTTP请求实践

高性能架构探索

大作业-附件5

曾烧麦

产品训练营

容器引擎学习笔记

lenka

3月日更

【办公自动化--加餐】打开Excel后首先应该进行的7个操作

IT蜗壳-Tango

办公自动化 3月日更 IT蜗壳教学

寻找被遗忘的勇气(十四)

Changing Lin

3月日更

jdk 源码系列之 TheadPoolExecutor

sinsy

jdk ThreadPoolExecutor

归并排序与快速排序以及PHP实现

一个大红包

3月日更

【LeetCode】设计哈希映射Java题解

Albert

算法 LeetCode 28天写作 3月日更

通用中间件模型

型火🔥

架构 分布式 抽象 中间件 模型

卡梅隆和他的《阿凡达》「Day 22」

道伟

28天写作

大作业-附件1

曾烧麦

产品训练营

哈希吧,滚雪球学 Python 哈希表与可哈希对象

梦想橡皮擦

28天写作 3月日更

别再问我们用什么画图的了!问就是excalidraw

万俊峰Kevin

微服务 工具软件 go-zero 画架构图

产品0期 - 完整的产品文档(大作业)

曾烧麦

产品训练营

Docker 教程(二):Dockerfile

看山

Docker Dockerfile

优雅编程 | 24个Javascript代码优化技巧

devpoint

js 空值运算符 高级函数 模板字面量

分布式事务

insight

分布式事务 3月日更

作业 - 知识星球 - 新手引导

hao hao

大作业-附件2

曾烧麦

产品训练营

架构师训练营 4 期 第11周

引花眠

架构师训练营 4 期

如何打造一款全球化的App?

故胤道长

硅谷 国际化 ios开发 Android开发 硅谷问道

最新版Swagger 3升级指南和新功能体验!

王磊

Java swagger

大作业

瑾瑾呀

javascript中的Strict模式

程序那些事

JavaScript ES6 程序那些事

大作业-附件3

曾烧麦

产品训练营

大作业-附件4

曾烧麦

产品训练营

Google面试题-怎样实现拼写纠错的功能?

Nick

数据结构 二分查找 数据结构与算法

源码分析-Netty: 并发编程的实践(二)

程序员架构进阶

源码分析 Netty 多线程高并发 28天写作 3月日更

JDK动态代理的实现机制

xzy

Java 动态代理 原理分析

架构师训练营-Web 攻击与防护

引花眠

架构师训练营 4 期

面试官再问你优先级队列,请把这篇文章丢给他

Silently9527

Java 优先级队列 二叉堆

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