Swift 周报 #76

作者:Jesse Squires,原文链接,原文日期:2017-06-29
译者:四娘;校对:Cwift;定稿:shanks

本期作者:Garric Nahapetian

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

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

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

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

赞助链接

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

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

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

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 7,614评论 4 42
  • 高考前,我是想考中山大学的,一来中大也称得上“岭南第一学府”,二来我亲哥在那里也能有个照应。后来成绩出来后,感觉中...
    梦飞北阅读 207评论 0 0
  • 町宝阅读 251评论 0 0
  • 03133-顾辛蕾 两天的绘本训练营结束后,心中很多感慨,久久不能平静,站在书架旁看着一本本的绘本,这些绘...
    鑫磊传奇阅读 175评论 0 2