【關(guān)于泽论?】
可選類型(Optional)艾少,沒有初始值的屬性
例:var name: String? nil
var name: String? =? “Text” String
Optional其實(shí)是個(gè)enum,里面有None和Some兩種類型翼悴。其實(shí)所謂的nil就是Optional.None 姆钉, 非nil就是Optional.Some,然后會(huì)通過Some(T)包裝(wrap)原始值抄瓦。這也是為什么在使用Optional的時(shí)候要拆包(從enum里取出來原始值)
【關(guān)于!】
操作一個(gè)可選類型的變量陶冷,進(jìn)行強(qiáng)解包的時(shí)候用到钙姊。如果有值就會(huì)得到變量的值,如果為nil那么程序就會(huì)crash
【as的定義】:有保證的轉(zhuǎn)換
1埂伦、向上轉(zhuǎn)換煞额,轉(zhuǎn)成自己的父類型
2、數(shù)據(jù)類型轉(zhuǎn)換
3沾谜、switch語句中進(jìn)行模式匹配
【as!的定義】 強(qiáng)制類型轉(zhuǎn)換膊毁,向下轉(zhuǎn)型時(shí)使用。
class Animal {}
class Cat: Animal {}
let animal: Animal = Cat()
let cat = animal as! Cat
【as?的定義】? 同as! 轉(zhuǎn)換失敗返回nil基跑,不會(huì)報(bào)錯(cuò)
【婚温??的定義】 取兩個(gè)中不為nil的