原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)注明:關(guān)東升的博客
在使用可選類型和可選鏈時(shí)择吊,多次使用了問(wèn)號(hào)(?)和感嘆號(hào)(!),但是它們的含義是不同的槽奕,下面我來(lái)詳細(xì)說(shuō)明一下几睛。
1. 可選類型中的問(wèn)號(hào)(?)
聲明這個(gè)類型是可選類型,訪問(wèn)這種類型的變量或常量時(shí)要使用感嘆號(hào)(!)粤攒,下列代碼是顯示拆包:
let result1: Double? = divide(100, 200)
print(result1!)
2. 可選類型中的感嘆號(hào)(!)
聲明這個(gè)類型也是可選類型所森,但是訪問(wèn)這種類型的變量或常量時(shí)可以不使用感嘆號(hào)(!),下列代碼是隱式拆包:
let result3: Double! = divide(100, 200)
print(result3)
3. 可選鏈中的感嘆號(hào)(!)
多個(gè)實(shí)例具有關(guān)聯(lián)關(guān)系夯接,當(dāng)從一個(gè)實(shí)例引用另外實(shí)例的方法焕济、屬性和下標(biāo)等成員時(shí)就會(huì)形成引用鏈,由于這個(gè)“鏈條”某些環(huán)節(jié)可能有值盔几,也可能沒(méi)有值晴弃,因此需要采用如下方式訪問(wèn):
emp.dept!.comp!.name
4. 可選鏈中的問(wèn)號(hào)(?)
在可選鏈中使用感嘆號(hào)(!)訪問(wèn)時(shí),一旦“鏈條”某些環(huán)節(jié)沒(méi)有值逊拍,程序就會(huì)發(fā)生異常上鞠,我們把感嘆號(hào)(!)改為問(wèn)號(hào)(?),代碼如下所示:
emp.dept?.comp?.name
這樣某些環(huán)節(jié)沒(méi)有值的時(shí)候返回nil顺献,程序不會(huì)發(fā)生異常旗国。