作者:Erica Sadun,原文鏈接,原文日期:2016-03-03
譯者:Crystal Sun;校對:shanks;定稿:Cee
今天,蘋果接受了三大重要的內部驅動的提議(有些提議內容稍作了修改):
由 Swift 核心團隊開發的,這三大提議徹底確定了 Swift 語言的特點,開發者如何使用 Swift 繼續前進。
API 設計指南(SE-0023)最引人注目,可以說是最棒的設計指南的典型范例,也是蘋果公司的一貫風格。里面大部分內容都淺顯易懂,很多建議非常有幫助,而有一部分內容我稍微有些個人的看法。作為開發者,你可以盡可能的提出歡迎或者批評。
自動轉換的項目(SE-0005)已經放棄了去掉 API 名字前面的 NS 前綴的工作(暫時放棄了,修改后的提議會作為一個獨單的提議提出來)。采用 API 指南將 Cocoa 的特色帶進 Swift 的世界里。閱讀評論,可以獲知這些 API 將會如何轉換,也包括 Swift 2 到 Swift 3 的項目工程。
提議的重要部分就是要去掉 Foundation API 里的 “NS” 前綴,這次改名被認為是有問題的,考慮到了好幾個原因,最經常提及的原因就是 Swift 中很多 Foundation 的參考語義屬性同 Swift 標準庫中的值語義互相矛盾沖突。 去 “NS” 前綴提議蘋果官方目前沒有接受,修改后的提議將會作為一個單獨的提議重新再次提出來,同時會考慮收到的反饋。
最后,標準庫更新(SE-0006)確立了 Swift 看起來如何,標準庫中的方法如何與最新的 API 指南協調一致。
提議中的這些改變會造成 Swift 代碼大規模的崩壞,需要一個遷移工具將 Swift 2 的代碼順利遷移成 Swift 3 代碼。提議中不同的 API 將是遷移的首要信息來源。另外,在語言允許的情況下,庫里仍然保留了舊的名字,同時用
rename
關鍵字作為棄用符號標注出來,幫助編譯器能夠生成正確的錯誤信息,彈出如何修改的信息。
在接受提議時,蘋果提到了兩個重要的改變:
提議中大部分修改都是與 Swift API 設計指南(SE-0023)有關的,特別是:
- 標準庫中使用第一個參數的標簽
- 小寫枚舉的名稱,包括 .some(x) 和 .none
第一個參數的標簽從 Swift 1 進化到 Swift 2 時更像是 Objective-C 語言風格,到了 Swift 3 則又更像是 Swift 語言風格了。目前已經處于純 C 和純 Objective-C 之間了,希望相對于兩次這次能找到平衡。
例如:
- func advancedBy(n: Distance, limit: Self) -> Self
+ func advanced(by n: Distance, limit: Self) -> Self
- func distanceTo(end: Self) -> Distance
+ func distance(to end: Self) -> Distance
枚舉將和其他靜態成員一樣,命名規則是小寫字母開頭,使用駝峰命名法。
更多擴充修改的列表可以更新的提議中找到。
本文由 SwiftGG 翻譯組翻譯,已經獲得作者翻譯授權,最新文章請訪問 http://swift.gg。