Swift譯:《宣告Swift3結(jié)束和Swift4開啟》

原文作者:Erica Sadun
原文鏈接:http://ericasadun.com
時(shí)間:2016年7月15日
譯者:與狼同行

Swift3已經(jīng)是一個(gè)十分引入矚目的產(chǎn)品,它匯聚了許多來自Swift開源社區(qū)的人們所給予的靈感,想法還有辛勤的勞動(dòng)。
可是現(xiàn)在,我想談一談Swift3發(fā)布的終局:
這里我來舉幾個(gè)關(guān)鍵的點(diǎn):

  • Swift3最后采取根本變化的日子是7月27日。
    那一天,很有可能會(huì)出現(xiàn)對(duì)于Swift3的修改批準(zhǔn)但是沒有實(shí)現(xiàn)的建議。其中包含一些重大的改變。于是,我們會(huì)有一次開放的討論,來商議那些議案的在Swift3和未來版本的Swift中的命運(yùn)。
  • 8月1日我們將開始展開Swift4的討論。這部分的討論將可能會(huì)引向一個(gè)很重要的事情,那就是在Swift3中所推遲,而作為Swift4的一個(gè)大目標(biāo) -- ABI穩(wěn)定。直到那之前,討論應(yīng)該仍然會(huì)集中關(guān)于Swift3.
  • 值得注意的是,在最后決定Swift3采取重大更新和開始討論Swift4之間我們會(huì)刻意的留出幾天。這個(gè)想法是提供幾天的時(shí)間來讓社區(qū)總結(jié)一下我們?cè)赟wift3中哪些事情已經(jīng)結(jié)束了。
  • 關(guān)于Swift3開發(fā)的最后分支計(jì)劃已被決定,但是很有可能會(huì)被主線所影響。其中的一部分會(huì)在6月27日討論如何去處理哪些在Swift3中剩余的還沒被實(shí)現(xiàn)的議案。
  • Swift3最后的發(fā)布日期仍然待定。但是會(huì)在7月27日后,Swift3將會(huì)基本結(jié)束,而不會(huì)再積極更新。
  • 隨著最近幾周的思考,我要呼吁幾個(gè)同意但沒有實(shí)現(xiàn)的議案,來引起注意。這些議案在目前蘋果的Swift團(tuán)隊(duì)未來幾周的時(shí)間中還無(wú)人解決。

SE-0042: 拍扁那些未應(yīng)用狀態(tài)的函數(shù)實(shí)例

譯者注:一個(gè)未應(yīng)用狀態(tài)的函數(shù)實(shí)例(unapplied method )是指諸如下面例子中的Type.instanceMethod,
產(chǎn)生一種諸如(Self) -> (Args...) -> Ret:的函數(shù)類型
struct Type {
  var x: Int
  func instanceMethod(y y: Int) -> Int {
    return x + y
  }
}
let f = Type.instanceMethod // f : (Type) -> (y: Int) -> Int
f(Type(x: 1))(y: 2) 
為了將未應(yīng)用狀態(tài)的函數(shù)實(shí)例更有用和持久來符合Swift語(yǔ)義,并且對(duì)于mutating方法更有效率,
我們應(yīng)該將其變?yōu)橐环N更平坦的函數(shù)類型(Self, Args...) -> Ret:
let f = Type.instanceMethod // f: (Type, y: Int) -> Int
f(Type(x: 1), y: 2)         // ==> 3

SE-0068:對(duì)于值類型和類一級(jí)成員,將dynamicType更名為Self
SE-0075: 添加一個(gè)生成配置導(dǎo)入測(cè)試

譯者介紹:形如此類:
#if canImport(UIKit)
   // UIKit-based code
   #elseif canImport(Cocoa)
   // OSX code
   #elseif
   // Workaround/text, whatever
#endif
#if !os(Linux)
   // Matches OSX, iOS, watchOS, tvOS, Windows, FreeBSD
#endif

SE-0096: 將dynamicType從一個(gè)屬性轉(zhuǎn)變?yōu)椴僮鞣?/a>

譯者介紹:
在swift中,dynamicType是一個(gè)屬性。也因?yàn)檫@樣,對(duì)于任何值不管他有沒有用,你都可以寫
這樣的代碼:比如說: 4.dynamicType和myFunction().dynamicType。
與大多數(shù)屬性不同的是,它并不表示特定類型的邏輯特性。
由于dynamicType表現(xiàn)的更像一個(gè)操作符就像sizeof。希望能修改語(yǔ)法。

SE-0077: 改進(jìn)操作符聲明

譯者介紹:希望用操作符的排序來取代數(shù)字優(yōu)先級(jí)
// 之前的語(yǔ)法
infix operator <> { precedence 100 associativity left }
// 改進(jìn)后的語(yǔ)法
precedencegroup ComparativePrecedence {
  associativity: left
  strongerThan: LogicalAndPrecedence
}
infix operator <> : ComparativePrecedence

SE-0092: 在協(xié)議和協(xié)議擴(kuò)展中的Typealiases
SE-0110: 區(qū)分單元組函數(shù)類型和多參數(shù)函數(shù)類型

譯者介紹:如今,我們我們可以這樣寫代碼:
let fn1 : (Int, Int) -> Void = { x in
    // The type of x is the tuple (Int, Int).
    // ...
}
let fn2 : (Int, Int) -> Void = { x, y in
    // The type of x is Int, the type of y is Int.
    // ...
}
一個(gè)存在n個(gè)參數(shù)的函數(shù)變量可以被放入n個(gè)參數(shù),也可以放入一個(gè)含n個(gè)參數(shù)的元組。
這違背了"最小詫異原則"(least surprise)和弱化了類型安全,應(yīng)該被修改。
議案者提議:(1)fn2表達(dá)式應(yīng)該可行,fn1應(yīng)該不可行
(2)一個(gè)含n個(gè)參數(shù)的元組的函數(shù)類型應(yīng)該套雙層括號(hào):
let a : ((Int, Int, Int)) -> Int = { x in return x.0 + x.1 + x.2 }

一些建議比如說SE-0075這個(gè)議案,這件事我們可以在任何時(shí)間去添加,但是許多其他的議案都目標(biāo)于提升Swift3的穩(wěn)定性。我想讓這個(gè)社區(qū)的人知道這些議案當(dāng)前沒有被實(shí)現(xiàn),希望能夠有興趣幫助這些議案發(fā)生在Swift3中。
相關(guān)的是,我也特別感謝社區(qū)實(shí)現(xiàn):

SE-0095: 用P1 & P2 語(yǔ)法代替 protocol<P1,P2> 語(yǔ)法 。

除了這些語(yǔ)言的議案,還有一系列關(guān)于標(biāo)準(zhǔn)庫(kù)優(yōu)秀的工作,在Swift3中將會(huì)變得更出色,以下是一個(gè)要點(diǎn)來總結(jié)這些任務(wù)。
https://gist.github.com/gribozavr/37e811f12b27c6
最后感謝每一個(gè)人,嗯,我是指那些為Swift3付出貢獻(xiàn)的每一個(gè)人~

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

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

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