可選鏈(optional chaining)
我們都知道「可選型」是什麼,那麼可選鏈又是什麼,舉個例子解釋一下:
struct myname
struct myinfo
class myclass
這裡有兩個結構體和乙個類,當,這個類例項化的時候:
var myinstance = myclass()
所有的可選屬性都會被初始化,因為我寫了預設值。
if let name =
myinstance.info?.myname?.name
else
在紅字部分,可以看到,是使用的一連串的可選值。這就叫做可選鏈。
這裡我還使用了乙個很早的筆記中提到的 if let name = 可選型 這樣的語法。
這是因為:
在可選鏈中,任何乙個環節的可選型解析失敗(值為nil),那麼整個可選鏈的結果為nil。
當然,其實我們可能會想在第乙個環節使用「!」來讓可選鏈返回乙個確切的值,而不是可選值,比如:
let name = myinstance.info
!.myname
!.name
但,大多數情況,我們並不知道有誰會來改**,有誰會改變某個封裝的實現,如果錯誤的解析了乙個可選值的話(乙個值為nil的可選型),那麼帶來的後果只有乙個,我們的程式會崩掉。。。。所以,
千萬不要這麼幹!!!!!
這章就說了這麼點事兒。。。。至於什麼呼叫函式,使用下標,不需要再說了,邏輯能力正常的人類,都直接就會用了。
swift 注意事項 十六 可選鏈
可選鏈 optional chaining 我們都知道 可選型 是什麼。那麼可選鏈又是什麼,舉個樣例解釋一下 struct myname struct myinfo class myclass 這裡有兩個結構體和乙個類,當。這個類例項化的時候 var myinstance myclass 全部的可選...
Swift 十七 可選鏈
1 swift入門學習筆記 第一版 對swift的基礎知識點進行梳理總結。知識點一直在變,只是作為參考,以蘋果官方文件為準 2 在學習完基本的知識點以後會結合官方文件及相關資料,在此版本的基礎上進行新增更改。1.1 可選型別使用時需要解包,解包時需要判斷是否為nil,常用if語句判斷,再去訪問其屬性...
Swift 可選鏈 備
在swift程式表示式中會看到問號 和感嘆號 它們代表什麼含義呢?這些符號都與可選型別和可選鏈相關,下面來看看可選鏈。可選鏈 類圖 它們之間是典型的關聯關係類圖。這些類一般都是實體類,實體類是系統中的人 事 物。employee通過dept屬性與department關聯,department通過co...