日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《从零开始学Swift》学习笔记(Day 26)——可选链

發(fā)布時間:2025/7/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《从零开始学Swift》学习笔记(Day 26)——可选链 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


Swift2.0學(xué)習(xí)筆記(Day 26)——可選鏈

?

原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:關(guān)東升的博客

?

Swift程序表達(dá)式中會看到問號(?)和感嘆號(!),它們代表什么含義呢?這些符號都與可選類型和可選鏈相關(guān),下面來看看可選鏈。

?

可選鏈:

類圖:

它們之間是典型的關(guān)聯(lián)關(guān)系類圖。這些類一般都是實體類,實體類是系統(tǒng)中的人、事、物。Employee通過dept屬性與Department關(guān)聯(lián),Department通過comp屬性與Company關(guān)聯(lián)。

下面看示例代碼:

?

class Employee { var no: Int = 0var name: String = "Tony"var job: String?var salary: Double = 0var dept: Department = Department() }class Department { var no: Int = 10var name: String = "SALES"var comp: Company = Company()}class Company { var no: Int = 1000var name: String = "EOrient"}let emp = Employee() //Employee實例print(emp.dept.comp.name) //

emp.dept.comp.name可以引用到Company實例,形成一個引用的鏈條,但是這個“鏈條”任何一個環(huán)節(jié)“斷裂”都無法引用到最后的目標(biāo)(Company實例)。

給定一個Employee實例,一定會有一個Department與其關(guān)聯(lián)。但現(xiàn)實是一個新入職員工未必有部門,這種關(guān)聯(lián)關(guān)系有可能有值,也有可能沒有值,我們需要使用可選類型(Department?)聲明dept屬性。

修改代碼如下:


?

class Employee {var no: Int = 0var name: String = "Tony"var job: String?var salary: Double = 0var dept: Department? // = Department() }class Department {var no: Int = 10var name: String = "SALES"var comp: Company? // = Company() } class Company {var no: Int = 1000var name: String = "EOrient" } let emp = Employee() print(emp.dept!.comp!.name) //顯示拆包 print(emp.dept?.comp?.name) //可選鏈

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

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

但是顯示拆包有一個弊端,如果可選鏈中某個環(huán)節(jié)為nil,將會導(dǎo)致代碼運行時錯誤。我們可以采用更加“溫柔”的引用方式,使用問號(?)來代替原來感嘆號(!)的位置,如下所示:

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


?

歡迎關(guān)注關(guān)東升新浪微博@tony_關(guān)東升。
關(guān)注智捷課堂微信公共平臺,了解最新技術(shù)文章、圖書、教程信息
?
?
更多精品iOSCocos、移動設(shè)計課程請關(guān)注智捷課堂官方網(wǎng)站:http://www.zhijieketang.com
智捷課堂論壇網(wǎng)站:http://51work6.com/forum.php

?

總結(jié)

以上是生活随笔為你收集整理的《从零开始学Swift》学习笔记(Day 26)——可选链的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。