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

相關文章
相關標籤/搜索