作者:Jesse Squires,原文鏈接,原文日期:2017-06-22
譯者:四娘;校對:Cwift;定稿:shanks
本期作者: Greg Heo
我不知道你怎么樣,但我還沉浸在 WWDC 的余興里沒恢復過來。
回到實際生活中,蘋果發(fā)布了 iOS 和 Xcode 的第二個 beta 版。查看開發(fā)者網(wǎng)站,Xcode 9 Beta 2 的更新說明特別提到了 Swift 4 的更新和修復。
贊助
磨煉你的 Swift 技能,在 workshop 里學習一些更深入的主題。諸如 Mike Ash 這樣世界知名的開發(fā)者,Swift 的專家齊聚一堂,他們將會帶領(lǐng)你探索協(xié)議,泛型,反射和 C 語言的橋接。7 月 13 日華盛頓場,以及 7 月 24 日紐約場。
社區(qū)任務
寫測試是一種探索標準庫和語言特性的好方式,也能避免給項目留坑。
可以通過 pull request 或者 tweet 提交任務。
Swift Unwrapped
在 第 16 集:Swift 的錯誤處理 — 發(fā)展歷史 里,主持人提到了 rethrows 和 “類型” 很多次,緬懷 Objective-C,暢談 Swift 錯誤處理機制的發(fā)展史。
資訊及社區(qū)
Swift 團隊的巨星 Joe Groff 要暫時離開 Twitter,Joe 在 Twitter 上一直對社區(qū)積極響應,我們希望他早日回歸。
聊到 Joe,他的前任 Chris Lattner (你們應該都認識)要重新找工作,雖然他說自己有 七年 Swift 開發(fā)經(jīng)驗,但我估計大部分公司還是想找一個有十年經(jīng)驗的 ˉ\_(ツ)_/ˉ
Xcode 9 和 Swift 4 現(xiàn)在還在測試階段,現(xiàn)在是一個回顧所有提案的好機會,看一看 Eric Cerney 總結(jié)出來的 What’s New in Swift 4?。
Ankit Aggarwal 在 Swift 的博客里寫了一篇 重新設計 Swift Package Manager 的 API,講述新的 API 設計。Swift 的 package 描述是使用 Swift 寫的,新的 API / 格式現(xiàn)在已經(jīng)更新到了最新的語言設計規(guī)范。
提交和合并的請求
Philippe Hausler 提了一些關(guān)于 SE-0170: NSNumber 與數(shù)字類型的橋接 的反饋,主要是與 Float 和 Double 有關(guān)。如果你之前被浮點數(shù)的精度問題困擾過的話,可以查看“減少Double 和 Float 橋接的約束條件”的 commit.
Swift 遷移工具已經(jīng) merge 到倉庫里了!遷移工具的核心就是把一個文件作為輸入,然后輸出一份文件,包含了所有修改建議,具體細節(jié)請查看 Swift migrator library 文件夾。
Swift 4 里大家最喜歡的 Encodable 協(xié)議,添加了對于 non-strong(weak,unowned,unmanaged)屬性的支持。
Swift 問題追蹤的第二個 bug 終于終于被修復了!?? SR-2 和 SR-4196 描述了 switch 語法嵌入到 #if / #endif 里的時候不能很好地運行,最近的一個 commit 終于修復了這個問題.
Xcode 9 里你可以使用 Undefined Behavior Sanitizer 檢測所有未定義行為,Main Thread Checker 利用現(xiàn)有的 Address Sanitizer 和 Thread Sanitizer 來檢測在非主線程刷新 UI 的行為,而。這些新功能都已經(jīng) merge 到 swift-lldb 里了,如果你感興趣的話可以去看源代碼。
提案
作為這篇去年發(fā)布的文章的跟進,Erica Sadun,Olivier Halligon,Caleb Davenport 和 Brian King 提交了一個關(guān)于 protocol extention 函數(shù)的 “role keywords” 的提案草稿。主要是講了重寫 protocol extension 里的函數(shù)時,需要加上一個關(guān)鍵字顯式地聲明這是一個 override 行為。
SE-0110 想要讓多個參數(shù) (String, Int) 的函數(shù)和單個元組 (String, Int) 參數(shù)區(qū)分開來。他們看起來是不是一樣?就像 Doug Gregor 在郵件列表里提到的,這個修改會讓編譯過程變得有點復雜:
Swift 4 已經(jīng)實現(xiàn)了超出 SE-0110 的內(nèi)容了,特別對于閉包來說,使用體驗差了很多。
[…]
Swift 核心團隊覺得這些使用體驗的犧牲對于 Swift 4 來說是不可接受的。已經(jīng)有好幾個計劃內(nèi)的解決方案,給閉包提供一個更好的模型,解決用戶體驗的問題,但完整的設計和實現(xiàn)已經(jīng)超出了 Swift 4 的開發(fā)目標了。所以,我們打算“回滾” SE-0110 在 Swift 4關(guān)于函數(shù)參數(shù)的修改。
沒人可以預知未來,很難了解這些提案對于 Swift 的影響,但這也是為什么我們有 snapshots builds 和 beta 版本。至于說 SE-0110 帶來的影響 ,我覺得我們應該全部參與進社區(qū)里,去鼓勵 Austin Zheng(SE-0110 的作者)繼續(xù)堅持下去。
沒有新的提案,但照例,更多細節(jié)請查看 Swift Evolution status page。
郵件列表
還記得 SE-0104: Protocol-oriented integers 嗎?Xiaodi Wu 最近寫了一些優(yōu)化實現(xiàn)方式的想法和建議。
Halen Wooten 開了一個新的討論,討論作為社區(qū)的成員該如何為社區(qū)貢獻。我知道郵件列表的界面很粗糙,但查看整個討論總能有一些收獲。根據(jù)文檔盡量使用增量編譯節(jié)省時間,我希望類似的這些技巧可以收集起來做成一份入門指南。
最后
學完 Swift 之后,你會希望做出什么樣的語言?例如這個,可能直接把訪問權(quán)限去掉? ??
本文由 SwiftGG 翻譯組翻譯,已經(jīng)獲得作者翻譯授權(quán),最新文章請訪問 http://swift.gg。