亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

《從零開始學Swift》學習筆記(Day 26)——可選鏈

發布時間:2020-03-03 18:16:59 來源:網絡 閱讀:595 作者:tony關東升 欄目:移動開發

原創文章,歡迎轉載。轉載請注明:關東升的博客

 

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

 

可選鏈:

類圖:

 《從零開始學Swift》學習筆記(Day 26)——可選鏈

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

下面看示例代碼:

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


 

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

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

修改代碼如下:

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


 

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

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


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

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


 

歡迎關注關東升新浪微博@tony_關東升。
關注智捷課堂微信公共平臺,了解最新技術文章、圖書、教程信息
 《從零開始學Swift》學習筆記(Day 26)——可選鏈

更多精品iOSCocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河曲县| 通州市| 余庆县| 曲阳县| 锡林浩特市| 宜黄县| 延庆县| 肥乡县| 西平县| 建昌县| 葵青区| 许昌市| 泸西县| 洪洞县| 鹰潭市| 九寨沟县| 沈丘县| 越西县| 门源| 博罗县| 五峰| 肃宁县| 南涧| 博湖县| 班戈县| 澄江县| 思南县| 锦屏县| 临澧县| 杭锦后旗| 锡林浩特市| 定襄县| 华坪县| 长汀县| 海原县| 衡东县| 屏东县| 武宁县| 扎囊县| 徐水县| 安陆市|