Swift 周報 #75

作者:Jesse Squires,原文鏈接,原文日期:2017-06-22
譯者:四娘;校對:Cwift;定稿:shanks

本期作者: Greg Heo

我不知道你怎么樣,但我還沉浸在 WWDC 的余興里沒恢復過來。

回到實際生活中,蘋果發(fā)布了 iOS 和 Xcode 的第二個 beta 版。查看開發(fā)者網(wǎng)站,Xcode 9 Beta 2 的更新說明特別提到了 Swift 4 的更新和修復。

贊助

Advanced Swift Workshops

磨煉你的 Swift 技能,在 workshop 里學習一些更深入的主題。諸如 Mike Ash 這樣世界知名的開發(fā)者,Swift 的專家齊聚一堂,他們將會帶領(lǐng)你探索協(xié)議,泛型,反射和 C 語言的橋接。7 月 13 日華盛頓場,以及 7 月 24 日紐約場。

eventbrite.com

社區(qū)任務

寫測試是一種探索標準庫和語言特性的好方式,也能避免給項目留坑。

  • SR-4824:編譯期添加集合類型約束的檢查
  • SR-5040:將 “Exclude” 相關(guān)的功能性檢查改為單元測試

可以通過 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-2SR-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 DavenportBrian 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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容