Optional 可選項(xiàng)
- Optional是 Swift 的一大特色岳瞭,也是 Swift 初學(xué)者最容易困惑的問(wèn)題
- 定義變量時(shí),如果指定是可選的候齿,表示該變量可以有一個(gè)指定類(lèi)型的值熙暴,也可以是 nil
- 定義變量時(shí),在類(lèi)型后面添加一個(gè) ?慌盯,表示該變量是可選的
- 變量可選項(xiàng)的默認(rèn)值是 nil
-常量可選項(xiàng)沒(méi)有默認(rèn)值周霉,主要用于在構(gòu)造函數(shù)中給常量設(shè)置初始數(shù)值
- 如果 Optional 值是 nil,不允許參與計(jì)算
- 只有解包(unwrap)后才能參與計(jì)算
- 在變量后添加一個(gè) !亚皂,可以強(qiáng)行解包
注意:必須要確保解包后的值不是 nil俱箱,否則會(huì)報(bào)錯(cuò)
常見(jiàn)錯(cuò)誤
unexpectedly found nil while unwrapping an Optional value
翻譯 :在對(duì)可選項(xiàng)[解包]時(shí)發(fā)現(xiàn) nil
?? 運(yùn)算符
- ??運(yùn)算符可以用于判斷 變量/常量的數(shù)值是否是 nil,如果是則使用后面的值替代
- 在使用 Swift 開(kāi)發(fā)時(shí)灭必,?? 能夠簡(jiǎn)化代碼的編寫(xiě)
// 常量可選項(xiàng)必須要設(shè)置初始值
var x: Int?
//= 20// x = 30// 變量可選項(xiàng)默認(rèn)值是 nil
var y: Int? //= 10y = 20print((x ?? 0) + (y ?? 0))
########注意:?? 的優(yōu)先級(jí)低狞谱,在使用時(shí)乃摹,應(yīng)該注意使用 ()
var str: String? = "老王"http:// 注意 ??
的優(yōu)先級(jí)低,在使用時(shí)跟衅,應(yīng)該注意使用 ()
print((str ?? "無(wú)名") + " 你好")
print(str ?? "無(wú)名" + " 你好")