Swift中Optional值的鏈?zhǔn)秸{(diào)用學(xué)習(xí)筆記
Swift中的Optional值有這樣的特性,當(dāng)對(duì)其進(jìn)行可選拆包時(shí),即使用?進(jìn)行Optional類型值的取值時(shí),如果Optional值不為nil,則會(huì)返回原始類型的數(shù)據(jù)值,如果為nil,則會(huì)返回nil。因此,當(dāng)使用?對(duì)Optional拆包后進(jìn)行方法、屬性或者下標(biāo)的調(diào)用時(shí),如果有值,則會(huì)成功相應(yīng)調(diào)用,如果沒(méi)有值,則會(huì)調(diào)用失敗,返回nil。
注意:使用!則會(huì)進(jìn)行強(qiáng)制拆包,這時(shí)如果Optional值為nil,則會(huì)出現(xiàn)運(yùn)行時(shí)錯(cuò)誤,因此開發(fā)者在使用!進(jìn)行強(qiáng)制拆包時(shí),必須確認(rèn)Optional類型值不為nil。
當(dāng)對(duì)可選值進(jìn)行可選拆包并調(diào)用其屬性或方法后,無(wú)論原屬性或者方法返回值是什么類型的,都會(huì)被包裝成Optional值類型。當(dāng)使用?對(duì)一個(gè)Optional值進(jìn)行拆包并調(diào)用其方法時(shí),方法的返回值一會(huì)被包裝為Optional類型,示例如下:
class Myclass {
var cls:MyClassTwo?
}
class MyClassTwo {
func run() -> String {
return "run"
}
}
let obj:Myclass = Myclass()
//將返回nil
obj.cls?.run()
在進(jìn)行Optional鏈調(diào)用的時(shí)候,會(huì)遵守如下一些特性:
1.如果進(jìn)行?拆包Optional值的屬性或者方法返回值原來(lái)為非Optional值,則會(huì)包裝成Optional值。
2.如果進(jìn)行?拆包Optional值的屬性或者方法返回值原來(lái)為Optional值,則依然會(huì)返回Optional值,并且并不會(huì)進(jìn)行Optional值類型的嵌套。
3.由于使用Optional值?可選拆包時(shí)會(huì)將其屬性和方法的返回值都包裝成Optional類型的,因此使用?可以進(jìn)行Optional鏈?zhǔn)秸{(diào)用,這其間,有一個(gè)環(huán)節(jié)調(diào)用失敗,整個(gè)鏈都會(huì)返回nil。
示例如下:
let obj:Myclass = Myclass() //將返回nil (obj.cls?.run())?.startIndex
相關(guān)文章
Swift?中?Opaque?Types學(xué)習(xí)指南
這篇文章主要為大家介紹了Swift?中?Opaque?Types學(xué)習(xí)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Swift中static和class關(guān)鍵字的深入講解
這篇文章主要給大家介紹了關(guān)于Swift中static和class關(guān)鍵字的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
深入解析Swift中switch語(yǔ)句對(duì)case的數(shù)據(jù)類型匹配的支持
這篇文章主要介紹了Swift中switch語(yǔ)句對(duì)case的數(shù)據(jù)類型匹配的支持,Swift中switch...case語(yǔ)句支持多種數(shù)據(jù)類型的匹配判斷,十分強(qiáng)大,需要的朋友可以參考下2016-04-04
Swift實(shí)現(xiàn)可自定義分頁(yè)寬度的UIScrollView
這篇文章主要為大家詳細(xì)介紹了Swift實(shí)現(xiàn)可自定義分頁(yè)寬度的UIScrollView,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
快速排序算法在Swift編程中的幾種代碼實(shí)現(xiàn)示例
快速排序是一種不穩(wěn)定的排序,存在著優(yōu)化空間,這里我們來(lái)看快速排序算法在Swift編程中的幾種代碼實(shí)現(xiàn)示例:2016-07-07
swift5.3 UIColor使用十六進(jìn)制顏色的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于swift5.3 UIColor使用十六進(jìn)制顏色的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

