Swift 可選鏈 備

2021-09-07 06:27:21 字數 1196 閱讀 3355

在swift程式表示式中會看到問號(?)和感嘆號(!),它們代表什麼含義呢?這些符號都與可選型別和可選鏈相關,下面來看看可選鏈。

可選鏈:

類圖:

它們之間是典型的關聯關係類圖。這些類一般都是實體類,實體類是系統中的人、事、物。employee通過dept屬性與department關聯,department通過comp屬性與company關聯。

下面看示例**:

[html]view plain

copy

print

?class employee   

class department   

class company   

let emp = employee()   //employee例項  

print(emp.dept.comp.name)  //  

emp.dept.comp.name可以引用到company例項,形成乙個引用的鏈條,但是這個「鏈條」任何乙個環節「斷裂」都無法引用到最後的目標(company例項)。

給定乙個employee例項,一定會有乙個department與其關聯。但現實是乙個新入職員工未必有部門,這種關聯關係有可能有值,也有可能沒有值,我們需要使用可選型別(department?)宣告dept屬性。

修改**如下:

[html]view plain

copy

print

?class employee   

class department   

class company   

let emp = employee()  

print(emp.dept!.comp!.name) //顯示拆包  

print(emp.dept?.comp?.name) //可選鏈  

其中可選型別的引用,可以使用感嘆號(!)進行顯示拆包,**修改如下:

print(emp.dept!.comp!.name)

但是顯示拆包有乙個弊端,如果可選鏈中某個環節為nil,將會導致**執行時錯誤。我們可以採用更加「溫柔」的引用方式,使用問號(?)來代替原來感嘆號(!)的位置,如下所示:

print(emp.dept?.comp?.name)

Swift 十七 可選鏈

1 swift入門學習筆記 第一版 對swift的基礎知識點進行梳理總結。知識點一直在變,只是作為參考,以蘋果官方文件為準 2 在學習完基本的知識點以後會結合官方文件及相關資料,在此版本的基礎上進行新增更改。1.1 可選型別使用時需要解包,解包時需要判斷是否為nil,常用if語句判斷,再去訪問其屬性...

學習Swift 可選鏈

可空鏈式呼叫是一種可以請求和呼叫屬性 方法及下標的過程,它的可空性體現於請求或呼叫的目標當前可能為空 nil 如果可空的目標有值,那麼呼叫就會成功 如果選擇的目標為空 nil 那麼這種呼叫將返回空 nil 多個連續的呼叫可以被鏈結在一起形成乙個呼叫鏈,如果其中任何乙個節點為空 nil 將導致整個鏈呼...

swift 筆記 十六 可選鏈

可選鏈 optional chaining 我們都知道 可選型 是什麼,那麼可選鏈又是什麼,舉個例子解釋一下 struct myname struct myinfo class myclass 這裡有兩個結構體和乙個類,當,這個類例項化的時候 var myinstance myclass 所有的可選...