作者: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 记得要反馈哦!
赞助链接
专家带你入门到精通只需一周时间。
Swift Unwrapped
在第 17 集:Swift 里的测试,Jesse 和 JP 讨论了如何使用 Swift 和相应的工具进行测试,保证每一个上线版本都井然有序。
资讯及社区
Greg Heo 写了一篇文章讲述 Swift 里 Encoder
和 Encodable
的原理,这个新功能会影响到很多开源的软件,了解它的原理更有助于你理解它们相关的 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-0029,SE-0066 和 SE-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-4295,SR-4757,SR-4786,SR-5014 和 SR-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 的时候也不怎么需要用到Substring
到String
的转换。即便不在开发目标里,只要是这方面的版本迁移问题,收到您的反馈我们都会很感谢。[…]
Itai Ferber 在 Swift-Evolution 发了一条信息 ,征求 SE-0166 和 SE-0167 的反馈,希望社区了解到之前的很多建议已经被采纳并实现,继续提供建议和意见。
Robert Bennett 提了一个有趣的建议,希望 protocol 里可以声明 let
。但我并不认为他提的算是一个问题。
我在处理协议的时候遇上了一个恼人的问题。在一个
class
或者struct
里使用let
去修饰一个属性并且在init
方法里初始化是很常见的情况,但却没办法在一个 protocol extension 里实现一个这样的init
方法。[…]
最后
“索取”有时候比“给予”感觉更好
本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。