写点什么

Swift 3.1 改进了语言、包管理器和 Linux 实现

2017 年 4 月 04 日

在语言方面,Sequence协议新增了两个成员 drop(while:)prefix(while:)。在特定谓词为 True 时,可通过丢弃或包含序列初始元素的方式返回所获得的子序列。因此如果有一个序列s,可通过执行下列命令获取其 n-th 到 m-th 子序列:

let subseq = s.prefix(while: {$0 Swift 3.1 还为所有数值类型增加了多个转换构造器(Conversion initializer),包括 IntFloat,以及Double类型,借此可产生正确的结果,或返回nil。所谓的可失败构造器(Failable initializer)是为了更好地解决松散类型化数据的转换问题,例如 JSON 格式所包含的数据。借此所有数值类型获得了一个可以使用exactly关键字的全新构造器,例如:

init?(exactly value: Int64)根据社区反馈,可失败的构造器是可抛出异常的构造器的首选做法。

虽然官方新闻稿中并未提及,但更新后的 Apple Swift 3.1 指南文档中提到,类型扩展现已可包含泛型 where子句:

复制代码
extension Container where Item == Double {
func average() -> Double {
var sum = 0.0
for index in 0..<count double="" return="" self="" sum=""></count>

以前,where子句只能用作将泛型约束给特定协议,这可能导致仅仅为了指定所需约束而引入 ad-hoc 协议:

复制代码
extension Container where Item: MyConstrainProtocol {
...

在语言方面还有一个改动需要注意,Swift 3.1 对@available特性进行了扩展,可用于表达按照Swift 不同版本指定的可用性,而以前只能按照语言和平台来指定可用性:

复制代码
@available(swift, introduced: 3.0, obsoleted: 3.1)
class Foo {
//...
}

借此开发者无须使用条件式编译即可判断函数、声明等的候补版本。

Swift 的 Linux 实现对现有的各种类进行了改进,包括NSDecimalURLSessionNSArrayNSData,同时改进了 JSON 序列化的性能,并在其他方面有诸多改进。

最后,Swift Package Manager 也提供了用户期待已久的很多功能,例如:

2017 年 4 月 04 日 19:001687
用户头像

发布了 283 篇内容, 共 86.1 次阅读, 收获喜欢 36 次。

关注

评论

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

产品训练营·第三周作业 & 总结

tiu

为您收录的操作系统系列-进程管理(上篇)

Arvin

操作系统 进程

超好用的文件转换神器!拿走不谢~

白色蜗牛

程序员 软件工具 生产工具

从JNOS商业操作系统,看京东零售商业化之路新探索

京东科技开发者

零售 数字化转型

浏览器同源策略,听说过么?

华为云开发者社区

浏览器 jsonp CORS 同源策略 跨域

火出圈的Clubhouse,究竟有什么奥秘?

拍乐云Pano

flutter RTC 语音聊天室 社交APP出海 clubhouse

区块链矿机挖矿游戏开发,区块链矿机游戏开发

v16629866266

28天瞎写的第二百三十六天:emacs 党的没落

树上

28天写作

offline app

lidaobing

28天写作 offline app

如果创意也可以被设计「幻想短篇 26/28」

道伟

28天写作

考前复习必备MySQL数据库(关系型数据库管理系统)

魔王哪吒

MySQL 程序员 面试 后端 2月春节不断更

工业互联网的“第一高地”,在哪?

浪潮云

工业互联网

数据中心网络技术新贵:VXLAN与园区网络虚拟化

华为云开发者社区

网络 数据中心 虚拟化 VXLAN 二层网络

智汇华云 | ArSDN之多集群简介

华云数据

华云数据

并发队列:ArrayBlockingQueue实际运用场景和原理

叫练

阻塞队列 LinkedBlockingQueue 并发队列 阻塞List ArrayBlockingQueue

利益相关者的问题及方案

梁媛

车载操作系统 (28天写作 Day26/28)

mtfelix

28天写作 车载操作系统 AOS QNX

浅谈OKR工作法

一笑

管理 OKR 28天写作

Elasticsearch Document 查询内部原理

escray

七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

产品训练营-第三次作业

Geek_娴子

第 3 周作业

老元宵

漫话递归与迭代

Justin

算法 方法论 成长 心灵鸡汤 28天写作

手机里什么APP都没有,一个很无趣的人 | 视频号28天(27)

赵新龙

28天写作

机器学习笔记之:最熟悉的陌生阵

Nydia

VUCA时代-不敏捷就得死

Ian哥

28天写作

即兴演讲的几种实用脚本

熊斌

读书笔记 28天写作

【CSS】css控制鼠标点击事件(pointer-events)

学习委员

html/css CSS小技巧 28天写作 纯CSS 2月春节不断更

熬夜肝了个IDEA插件整合程序员常用的工具,总有你能用上的

Silently9527

IDEA idea插件 java程序员

GitHub 标星 167k!你要的优质书籍这都有,还开源!

沉默王二

GitHub 开源项目 电子书

开发质量提升系列:日常重视好投产,运维拍肩也不怕

罗小龙

最佳实践 方法论 28天写作 2月春节不断更

深入理解 ProtoBuf 原理与工程实践(概述)

vivo互联网技术

数据结构 序列化 protobuf

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

Swift 3.1改进了语言、包管理器和Linux实现-InfoQ