10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

JDK动态代理的实现机制

xzy

Java 动态代理 原理分析

容器引擎学习笔记

lenka

3月日更

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

引花眠

架构师训练营 4 期

架构师训练营 4 期 第11周

引花眠

架构师训练营 4 期

javascript中的Strict模式

程序那些事

JavaScript ES6 程序那些事

AI开发效率低,你可以试试华为NAIE AutoML

华为云开发者联盟

华为 AI 框架 AutoML NAIE平台

jdk 源码系列之 TheadPoolExecutor

sinsy

jdk ThreadPoolExecutor

Hadoop之YARN的内部机制

hanke

大数据 hadoop 开源 YARN

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

程序员架构进阶

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

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

devpoint

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

写代码这件事

ES_her0

28天写作 3月日更

用户行为分析模型实践(一)—— 路径分析模型

vivo互联网技术

大数据 数据分析 用户行为分析

在PostgreSQL中使用ltree处理层次结构数据

PostgreSQLChina

数据库 postgresql 开源 软件 开源社区

Ubuntu 日常系列:常用软件

TroyLiu

Linux ubuntu Ubuntu20.04

学无定法——知识反转效应

Justin

心理学 28天写作 游戏设计

通用中间件模型

型火🔥

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

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

道伟

28天写作

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

梦想橡皮擦

28天写作 3月日更

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

Changing Lin

3月日更

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

故胤道长

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

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

王磊

Java swagger

利用深度元学习对城市销量进行预测 | AAAI 2021论文解读

京东科技开发者

零售 预测

高并发HTTP请求实践

高性能架构探索

分布式事务

insight

分布式事务 3月日更

52条SQL语句性能优化策略,建议收藏

Java小咖秀

MySQL 性能优化 后端 MySQL性能优化

书单|互联网企业面试案头书之程序员软技能篇

博文视点Broadview

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

Nick

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

Docker 教程(二):Dockerfile

看山

Docker Dockerfile

大作业

瑾瑾呀

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

Silently9527

Java 优先级队列 二叉堆

初识Golang之聊聊类型

Kylin

3月日更 21天挑战 Java转go Go 语言

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