作者:Jesse Squires,原文鏈接耍攘,原文日期:2017-06-29
譯者:四娘奉呛;校對:Cwift;定稿:shanks
本期作者:Garric Nahapetian
Swift 的 git 倉庫這周特別忙珊搀,這里有一些 GitHub 的數(shù)據(jù):
除了 Merge 之外冶忱,總共有 39 個作者 push 了 156 個 commit 到主分支,所有分支算起來有 284 個 commit境析。在主分支囚枪,401 個文件被修改,增 12589 刪 9215 …
在 WWDC 結(jié)束不久就完成了這么多的事情實屬不易劳淆,在 Swift 4 立項之后核心團隊和別的貢獻者完成了驚人的進展链沼。
iOS 11 beat 2,tvOS 11 beta 2 和 Swift Playgrounds 2 beta 2 都開放下載了沛鸵,點擊此處下載括勺,遇到 bug 記得要反饋哦!
贊助鏈接
專家?guī)闳腴T到精通只需一周時間曲掰。
Swift Unwrapped
在第 17 集:Swift 里的測試疾捍,Jesse 和 JP 討論了如何使用 Swift 和相應(yīng)的工具進行測試,保證每一個上線版本都井然有序栏妖。
資訊及社區(qū)
Greg Heo 寫了一篇文章講述 Swift 里 Encoder
和 Encodable
的原理乱豆,這個新功能會影響到很多開源的軟件,了解它的原理更有助于你理解它們相關(guān)的 PR吊趾。
Matt Godbolt 的探索編譯器現(xiàn)已支持 Swift咙鞍。(譯者注:這是一個學(xué)習(xí)編譯原理的網(wǎng)站房官,輸入代碼趾徽,就可以看到編譯后在對應(yīng)平臺上的匯編碼)
David Owens 放出了一個 VSCode 的插件续滋,讓 VSCode 也能支持 Swift。
Swift 支援團隊開源了 Swift-Evolution 的 App — Evo孵奶。
Steven Hepting 講述了 Swift 的 sort()
方法是怎么優(yōu)化的疲酌,這里可以找到相應(yīng)的源碼。
Learn Swift 皇后區(qū) & Learn Swift 波蘭, 都落下了帷幕了袁。 這是11期 Learn Swift {城市} 系列的合集朗恳!下次會是在哪座城市呢?
Brisk载绿,一個反饋 bug 的 macOS app 上線了 1.0 版本 粥诫,并且快速迭代發(fā)布了 1.0.1 版本,記得要幫忙反饋 bug 哦崭庸!
元組門又有了更多的進展怀浆,這對我來說很有趣,因為我個人也使用過類似的方式怕享。就像 Slava 指出的那樣执赡,這件事情始終還有優(yōu)化的空間。(譯者注:元組門就是閉包里的元組不再自動展開的事情函筋,前兩周的周報都有提到沙合,詳情請看 SE-0029,SE-0066 和 SE-0110)跌帐。
提交和合并的請求
Ben Cohen 發(fā)起一個新的合并請求首懈,讓 Substring
可以添加到 Hashable
容器里(詳情請看下面的郵件列表討論)。
Itai Ferber 通過了一個合并請求谨敛,修復(fù)了 SR-5277究履,讓 class 可以與父類共用一個 Encoder/Decoder。更多詳情請看這里的討論進程佣盒。
Philippe Hausler 通過了一個合并請求挎袜,修復(fù)了 SR-5292。修復(fù)了 Foundation 里使用 slice 嵌套 slice 時產(chǎn)生的 bug肥惭。
Joe Groff 通過了一個合并請求盯仪,讓 KeyPath 支持可選鏈(Optional Chainning)和強制解包(Force Unwrapping)。
Doug Gregor 通過了一個合并請求 蜜葱,優(yōu)化了基本類型全景,類型別名和遞歸的處理邏輯,并且修復(fù)了 SR-4295牵囤,SR-4757爸黄,SR-4786滞伟,SR-5014 和 SR-4737。
Dave Abrahams 發(fā)起一個合并請求炕贵,實現(xiàn)了 SE-0180 字符串索引越界(后面有詳細介紹)梆奈。
在命令行里運行 man swift
時展示的手冊已獲得更新。
Maxim Moiseev 通過了一個合并請求称开,修復(fù)了 [String]
使用 flatMap
時的向后兼容性亩钟,有興趣了解的話可以查看這里的 Swift 迷思- by Robert Widmann。
David Farler 通過了一個合并請求鳖轰,內(nèi)容主要是 Xcode 9 里編譯時索引功能(index-while-building)在這段時間里的改進清酥。
如果你想知道某個修復(fù)了 rdar://
的 PR 的細節(jié),放心大膽地問就可以了蕴侣。
審核中的提案
SE-0180: String Index Overhaul 在一些討論之后重新退回審核階段焰轻。
郵件列表
Erica Sadun 寫了一篇文章關(guān)于 !!
這個她稱為“解包或崩潰”的操作符。你可以在這個 Gist 里找到相應(yīng)的草稿昆雀。
使用一個操作符辱志,在解包失敗時提供反饋信息,已經(jīng)成為 Swift 開發(fā)者社區(qū)里普遍會實現(xiàn)的一個東西了忆肾,你對于把這個廣泛使用的操作符加入到標(biāo)準(zhǔn)庫有什么想法荸频?
譯者注:使用了
!!
的代碼會類似于這樣let _ = optionalObject !! "空的對象"
,能夠在強制解包失敗的時候提供 debug 信息客冈,思路很棒旭从,建議大家看一下。
Ben Cohen 發(fā)了一篇文章场仲,內(nèi)容主要是關(guān)于 Substring
性能的討論和悦。
作為 SE-0163 的要點之一,
Substring
顯式轉(zhuǎn)換到String
的問題都推遲到第一版實現(xiàn)之后討論渠缕。直到現(xiàn)在鸽素,收到的反饋也都沒有讓我們覺得這樣的顯式轉(zhuǎn)換很有必要 — 從 3.2 遷移到 4.0 的時候也不怎么需要用到Substring
到String
的轉(zhuǎn)換。即便不在開發(fā)目標(biāo)里亦鳞,只要是這方面的版本遷移問題馍忽,收到您的反饋我們都會很感謝。[…]
Itai Ferber 在 Swift-Evolution 發(fā)了一條信息 燕差,征求 SE-0166 和 SE-0167 的反饋遭笋,希望社區(qū)了解到之前的很多建議已經(jīng)被采納并實現(xiàn),繼續(xù)提供建議和意見徒探。
Robert Bennett 提了一個有趣的建議瓦呼,希望 protocol 里可以聲明 let
。但我并不認為他提的算是一個問題测暗。
我在處理協(xié)議的時候遇上了一個惱人的問題央串。在一個
class
或者struct
里使用let
去修飾一個屬性并且在init
方法里初始化是很常見的情況磨澡,但卻沒辦法在一個 protocol extension 里實現(xiàn)一個這樣的init
方法。[…]
最后
“索取”有時候比“給予”感覺更好
本文由 SwiftGG 翻譯組翻譯质和,已經(jīng)獲得作者翻譯授權(quán)稳摄,最新文章請訪問 http://swift.gg。