可選類型(Optionals) 若有值時,不再隱式的轉(zhuǎn)換為 true
,同樣,若無值時,也不再隱式的轉(zhuǎn)換為 false
, 這是為了避免在判別 optional Bool
的值時產(chǎn)生困惑。 替代的方案是,用==
或 !=
運算符顯式地去判斷Optinal是否是 nil
,以確認(rèn)其是否包含值。
Swift新增了一個 Nil合并運算符(Nil Coalescing Operator) (a ?? b
), 該表達(dá)式中,如果Optional a
的值存在,則取得它并返回,若Optional a
為nil
,則返回默認(rèn)值 b
更新和擴(kuò)展 字符串的比較(Comparing Strings) 章節(jié),用以反映和展示'字符串和字符的比較',以及'前綴(prefix)/后綴(postfix)比較'都開始基于擴(kuò)展字符集(extended grapheme clusters)規(guī)范的等價比較.
現(xiàn)在,你可以通過 可選鏈(Optional Chaining)來:給屬性設(shè)值,將其賦給一個下標(biāo)腳注(subscript); 或調(diào)用一個變異(mutating)方法或運算符。對此,章節(jié)——通過可選鏈訪問屬性(Accessing Properties Through Optional Chaining)的內(nèi)容已經(jīng)被相應(yīng)的更新。而章節(jié)——通過可選鏈調(diào)用方法(Calling Methods Through Optional Chaining中,關(guān)于檢查方法調(diào)用是否成功的例子,已被擴(kuò)展為展示如何檢查一個屬性是否被設(shè)值成功。
在章節(jié)可選鏈中,增加一個新的小節(jié) 訪問可選類型的下標(biāo)腳注(Accessing Subscripts of Optional Type)
更新章節(jié) 訪問和修改數(shù)組(Accessing and Modifying an Array) 以標(biāo)示:從該版本起,不能再通過+=
運算符給一個數(shù)組添加一個新的項。. 對應(yīng)的替代方案是, 使append
方法, 或者通過+=
運算符來添加一個只有一個項的數(shù)組(single-item Array).
添加了一個提示:在 范圍運算符(Range Operators)中,比如, a...b
和 a..<b
,起始值a
不能大于結(jié)束值b
.
重寫了繼承(Inheritance) 這一章:刪除了本章中關(guān)于構(gòu)造器重寫的介紹性報道;轉(zhuǎn)而將更多的注意力放到新增的部分——子類的新功能,以及如何通過重寫(overrides)修改已有的功能。另外,小節(jié) 重寫屬性的Getters和Setters(Overriding Property Getters and Setters) 中的例子已經(jīng)被替換為展示如何重寫一個 description
屬性. (而關(guān)于如何在子類的構(gòu)造器中修改繼承屬性的默認(rèn)值的例子,已經(jīng)被移到 構(gòu)造過程(Initialization) 這一章.)
更新了 構(gòu)造器的繼承與重寫(Initializer Inheritance and Overriding) 小節(jié)以標(biāo)示: 重寫一個特定的構(gòu)造器必須使用 override
修改器.
更新 Required構(gòu)造器(Required Initializers) 小節(jié)以標(biāo)示:required
修改器現(xiàn)在需要出現(xiàn)在所有子類的required構(gòu)造器的聲明中, 而required構(gòu)造器的實現(xiàn),現(xiàn)在可以僅從父類自動繼承。
中置(Infix)的 運算符函數(shù)(Operator Functions) 不再需要@infix
屬性.
前置和后置運算符(Prefix and Postfix Operators)的@prefix
和 @postfix
屬性,已變更為 prefix
和 postfix
聲明修改器(declaration modifiers).
增加一條注解:當(dāng)Prefix和postfix運算符被作用于同一個操作數(shù)時,關(guān)于前置和后置運算符(Prefix and Postfix Operators)的順序(postfix運算符會先被執(zhí)行)
在運算符函數(shù)(Operator functions)中, 組合賦值運算符(Compound Assignment Operators) 不再使用 @assignment
屬性來定義函數(shù).
在這個版本中,在定義自定義操作符(Custom Operators) 時,修改器(Modifiers)的出現(xiàn)順序發(fā)生變化。比如, 現(xiàn)在,你該編寫 prefix operator
, 而不是 operator prefix
.
增加信息:關(guān)于dynamic
聲明修改器(declaration modifier),于章節(jié) 聲明修改器(Declaration Modifiers).
增加信息:字面量Literals 的類型推導(dǎo)(type inference)
為章節(jié)Curried Functions添加了更多的信息.