作者 Sergio De Simone ,譯者 劉嘉洋
Apple工程師Ted Kremenek在博文中寫道,Swift 3.0已發(fā)布。這次發(fā)布的新版本中對于語言及其標(biāo)準(zhǔn)庫進(jìn)行了大量的修改,增加了Linux端口,并首次官方發(fā)布了Swift Package Manager。
自2015年底Apple開源Swift之后,Swift 3是首個發(fā)布的主要版本,該版本實(shí)現(xiàn)了Swift演變過程中所討論并通過的90多個提議。
Swift 3.0中的一系列變化旨在依照Swift API Design 指南,通過去除一部分可能被視作遺留下來的Objective-C的內(nèi)容,來清理API。這個舉措可以有效縮短Swift的語法,并增強(qiáng)一致性:
需要命名函數(shù)和方法的第一個參數(shù)以實(shí)現(xiàn)寫操作(除非用_顯式省略):
aString.write(toFile: "filename", atomically: true, encoding: NSUTF8StringEncoding) UIFont.preferredFont(forTextStyle: UIFontTextStyleSubheadline)而不是:
aString.writeToFile("filename", atomically: true, encoding: NSUTF8StringEncoding) UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline)省略不必要的詞:
UIColor.red()而不是:
UIColor.redColor()當(dāng)上述的兩條規(guī)則同時(shí)采納的時(shí)候會產(chǎn)生更好的效果,例如下面的語句所示:
aString.stringByReplacingOccurrencesOfString("A", withString: "a")變成:
aString.replacingOccurrences(of: "A", with: "a")Swift 3改進(jìn)的另外一個版塊是處理屬于多個Cocoa框架的C功能。比如說所有以CGContext、CGAffineTansform、CGPDFDocument等開始的Core Graphics功能,現(xiàn)在可以被稱為是對象的方法:
if let ctx = UIGraphicsGetCurrentContext() { ctx.setFillColor(UIColor.red().cgColor) ... } CGAffineTransform(translationX: 64, y: 0)
Swift 3中還對語法進(jìn)行了改變,以清理語言。比如說,去除了++和 --運(yùn)算符,去除了函數(shù)的參數(shù)中的var,去除了C語言中的循環(huán)條件和增量器,這些語法帶來的弊大于利。
Swift 3的變化列表涵蓋了太多內(nèi)容,很抱歉我們無法在一篇文章中涵蓋所有的內(nèi)容。你可以在官方的公告中查看所有的更新細(xì)節(jié)。
查看英文原文:Swift 3 is Out