写点什么

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

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

关注

评论

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

利用JSON管理测试数据实现Pytest数据驱动测试:方法与实践

测吧(北京)科技有限公司

测试

Pytest中autouse参数的用法

测吧(北京)科技有限公司

测试

Pytest 插件的种类

测吧(北京)科技有限公司

测试

工信部:2024上半年我国信息安全领域收入909亿元

我再BUG界嘎嘎乱杀

网络安全 安全 信息安全 网安

利用Excel管理测试数据实现Pytest数据驱动测试

测吧(北京)科技有限公司

测试

利用CSV管理测试数据实现Pytest数据驱动测试:方法与实践

测吧(北京)科技有限公司

测试

利用Pytest结合YAML实现数据驱动测试:深入解析与实践

测吧(北京)科技有限公司

测试

通过Fixture实现参数化测试

测吧(北京)科技有限公司

测试

一文探究传统数据仓库、数据湖与 Data Fabric(数据编织)的差异

Aloudata

数据仓库 数据湖 ETL Data Fabric

活动预告|“AI+Security”系列第2期:对抗!大模型自身安全的攻防博弈线上活动即将开始

云起无垠

解锁拼多多商品数据:如何高效利用拼多多商品列表数据接口

tbapi

拼多多API 拼多多商品数据采集 拼多多商品列表数据接口 拼多多商品列表API

史上最大规模宕机事件的10个重要教训

我再BUG界嘎嘎乱杀

网络安全 安全 网安 CrowdStrike

20W+开发在线观看赛事直播平台:实战运营使用差异化与跟随战略案例

软件开发-梦幻运营部

经典排序算法:冒泡排序与选择排序

测吧(北京)科技有限公司

测试

LIFO(后进先出)、函数调用堆与栈的区别

测吧(北京)科技有限公司

测试

多人同时大批量导出数据到 Excel 干崩服务器,如何处理?

源字节1号

开源

我们程序员想晋升为什么这么难啊?

秃头小帅oi

Pytest中Fixture的yield用法

测吧(北京)科技有限公司

测试

使用pytest.ini 文件配置默认参数

测吧(北京)科技有限公司

测试

算法性能评估:时间复杂度与空间复杂度的全面解析

测吧(北京)科技有限公司

测试

权限管理:RBAC和ACL在XIAOJUSURVEY的应用

XIAOJUSURVEY

服务端 权限控制 acl rbac Nest.js

流动的智慧:开创集成资产管理新局面 ——华为云ROMA Connect资产中心

华为云PaaS服务小智

API 华为云 企业数字化 资产中心

Network Control in Smart Manufacturing: Comparing IPQ9574 and IPQ5018

wallyslilly

ipq5018 ipq9574

管道应用、消息收发与FIFO:先进先出

测吧(北京)科技有限公司

测试

什么是Fixture作用范围

测吧(北京)科技有限公司

测试

Pytest-ordering自定义测试用例执行顺序

测吧(北京)科技有限公司

测试

“CITE2025深圳电子展”重磅来袭,全新展会主题隆重揭晓!

AIOTE智博会

电子展 深圳电子展 电子信息展 电博会

解读Solana流动性质押发展现状:市场格局的悄然转变

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

OpenAI发布了 “轻量化” GPT-4o mini 功能更强、成本更低

蓉蓉

GPT-4o mini

在Pytest中使用Fixture作为参数的高级技巧与最佳实践

测吧(北京)科技有限公司

测试

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