Swift 周报 #76

做者:Jesse Squires,原文连接,原文日期:2017-06-29
译者:四娘;校对:Cwift;定稿:shankshtml

本期做者:Garric Nahapetiangit

Swift 的 git 仓库这周特别忙,这里有一些 GitHub 的数据:github

除了 Merge 以外,总共有 39 个做者 push 了 156 个 commit 到主分支,全部分支算起来有 284 个 commit。在主分支,401 个文件被修改,增 12589 删 9215 …web

在 WWDC 结束不久就完成了这么多的事情实属不易,在 Swift 4 立项以后核心团队和别的贡献者完成了惊人的进展。json

iOS 11 beat 2,tvOS 11 beta 2 和 Swift Playgrounds 2 beta 2 都开放下载了,点击此处下载,遇到 bug 记得要反馈哦!swift

赞助连接闭包

提高你的技能 — 成就你的职业生涯app

专家带你入门到精通只需一周时间。wordpress

bignerdranch.com工具

Swift Unwrapped

第 17 集:Swift 里的测试,Jesse 和 JP 讨论了如何使用 Swift 和相应的工具进行测试,保证每个上线版本都井井有理。

资讯及社区

Greg Heo 写了一篇文章讲述 Swift 里 EncoderEncodable 的原理,这个新功能会影响到不少开源的软件,了解它的原理更有助于你理解它们相关的 PR。

Matt Godbolt 的探索编译器现已支持 Swift。(译者注:这是一个学习编译原理的网站,输入代码,就能够看到编译后在对应平台上的汇编码)

David Owens 放出了一个 VSCode 的插件,让 VSCode 也能支持 Swift。

Swift 支援团队开源了 Swift-Evolution 的 App — Evo

Steven Hepting 讲述了 Swift 的 sort() 方法是怎么优化的,这里能够找到相应的源码

Learn Swift 皇后区 & Learn Swift 波兰, 都落下了帷幕。 这是11期 Learn Swift {城市} 系列的合集!下次会是在哪座城市呢?

Brisk,一个反馈 bug 的 macOS app 上线了 1.0 版本 ,而且快速迭代发布了 1.0.1 版本,记得要帮忙反馈 bug 哦!

元组门又有了更多的进展,这对我来讲颇有趣,由于我我的也使用过相似的方式。就像 Slava 指出的那样,这件事情始终还有优化的空间。(译者注:元组门就是闭包里的元组再也不自动展开的事情,前两周周报都有提到,详情请看 SE-0029SE-0066SE-0110)。

提交和合并的请求

Ben Cohen 发起一个新的合并请求,让 Substring 能够添加到 Hashable 容器里(详情请看下面的邮件列表讨论)。

Itai Ferber 经过了一个合并请求,修复了 SR-5277,让 class 能够与父类共用一个 Encoder/Decoder。更多详情请看这里的讨论进程

Philippe Hausler 经过了一个合并请求,修复了 SR-5292。修复了 Foundation 里使用 slice 嵌套 slice 时产生的 bug。

Joe Groff 经过了一个合并请求,让 KeyPath 支持可选链(Optional Chainning)和强制解包(Force Unwrapping)。

Doug Gregor 经过了一个合并请求 ,优化了基本类型,类型别名和递归的处理逻辑,而且修复了 SR-4295SR-4757SR-4786SR-5014SR-4737

Dave Abrahams 发起一个合并请求,实现了 SE-0180 字符串索引越界(后面有详细介绍)。

在命令行里运行 man swift 时展现的手册已得到更新

Maxim Moiseev 经过了一个合并请求,修复了 [String] 使用 flatMap 时的向后兼容性,有兴趣了解的话能够查看这里的 Swift 迷思- by Robert Widmann

David Farler 经过了一个合并请求,内容主要是 Xcode 9 里编译时索引功能(index-while-building)在这段时间里的改进。

若是你想知道某个修复了 rdar:// 的 PR 的细节,放心大胆地问就能够了

审核中的提案

SE-0180: String Index Overhaul 在一些讨论以后从新退回审核阶段

邮件列表

Erica Sadun 写了一篇文章关于 !! 这个她称为“解包或崩溃”的操做符。你能够在这个 Gist 里找到相应的草稿。

使用一个操做符,在解包失败时提供反馈信息,已经成为 Swift 开发者社区里广泛会实现的一个东西了,你对于把这个普遍使用的操做符加入到标准库有什么想法?

译者注:使用了 !! 的代码会相似于这样 let _ = optionalObject !! "空的对象",可以在强制解包失败的时候提供 debug 信息,思路很棒,建议你们看一下。

Ben Cohen 发了一篇文章,内容主要是关于 Substring 性能的讨论。

做为 SE-0163 的要点之一,Substring 显式转换到 String 的问题都推迟到初版实现以后讨论。直到如今,收到的反馈也都没有让咱们以为这样的显式转换颇有必要 — 从 3.2 迁移到 4.0 的时候也不怎么须要用到 SubstringString的转换。即使不在开发目标里,只要是这方面的版本迁移问题,收到您的反馈咱们都会很感谢。

[…]

Itai Ferber 在 Swift-Evolution 发了一条信息 ,征求 SE-0166SE-0167 的反馈,但愿社区了解到以前的不少建议已经被采纳并实现,继续提供建议和意见。

Robert Bennett 提了一个有趣的建议,但愿 protocol 里能够声明 let。但我并不认为他提的算是一个问题。

我在处理协议的时候赶上了一个恼人的问题。在一个 class 或者 struct 里使用 let 去修饰一个属性而且在 init 方法里初始化是很常见的状况,但却没办法在一个 protocol extension 里实现一个这样的 init 方法。

[…]

最后

“索取”有时候比“给予”感受更好

本文由 SwiftGG 翻译组翻译,已经得到做者翻译受权,最新文章请访问 http://swift.gg

相关文章
相关标签/搜索