Swift - 可選鏈

可選鏈

可選鏈

  • 它的可選性體現(xiàn)于請求或者調用的目標當前可能為空 (nil)

    • 如果可選的目標有值,那么調用就會成功;
    • 如果選擇的目標為空(nil),則這種調用將返回空(nil)
  • 多次調用被鏈接在一起形成一個鏈,如果任何一個節(jié)點為空(nil)將導致整個鏈失效。

  • 可選鏈的使用

    • 在可選類型后面放一個問號,可以定義一個可選鏈。
    • 這一點很像在可選值后面放一個嘆號來強制拆得其封包內(nèi)的值
      • 它們的主要的區(qū)別在于當可選值為空時可選鏈即刻失敗
      • 然而一般的強制解析將會引發(fā)運行時錯誤。
    • 因為可選鏈的結果可能為nil,可能有值.因此它的返回值是一個可選類型
      • 可以通過判斷返回是否有值來判斷是否調用成功
      • 有值,說明調用成功
      • 為nil,說明調用失敗

可選鏈的示例

  • 從可選鏈中取值
    • 示例描述: 人(Person)有一個狗(Dog),狗(Dog)有一個玩具(Toy),玩具有價格(price)
    • 使用代碼描述上述信息
// 1.定義類
class Person {
    var name : String
    var dog : Dog?
}

class Dog {
    var color : UIColor
    var toy : Toy?

    init(color : UIColor) {
        self.color = color
    }
    func runing() {
        print("跑起來")
    }
}

class Toy {
    var price : Double = 0.0
}

// 2.創(chuàng)建對象,并且設置對象之間的關系
// 2.1創(chuàng)建對象
let person = Person(name : "小芳")
let dog = Dog(color : UIColor.redColor())
let toy = Toy()
toy.price = 100.0

// 2.2.設置對象之間的關系
person.dog = dog
dog.toy = toy
  • 需求:獲取小明的大黃寵物的玩具價格
    • 出的值為可選類型,因為可選鏈中有一個可選類型為nil,則返回nil
    • 因此結果可能有值,可能為nil.因此是一個可選類型
let price = person.dog?.toy?.price
print(price) // Optional(100.0)\n
  • 需求:給小明的大黃一個新的玩具
    • 相當于給可選類型賦值
person.dog?.toy = Toy()
  • 需求:讓小明的狗跑起來
    • 如果可選類型有值,則會執(zhí)行該方法
    • 如果可選類型為nil,則該方法不會執(zhí)行
person.dog?.runing()
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 可選鏈(Optional Chaining)是一種可以請求和調用屬性、方法和子腳本的過程,用于請求或調用的目標可能...
    零度_不結冰閱讀 367評論 0 0
  • 可選連的概念 它的可選性體現(xiàn)于請求或調用的目標當前可能為空(nil)如果可選的目標有值,那么調用就會成功;如果選擇...
    猴子的救兵520閱讀 464評論 0 0
  • 介紹 可選鏈,英文叫Optional Chaining,是表示變量、屬性等值可為空,也就是值可能為nil。若有值,...
    jdong閱讀 387評論 0 0
  • 介紹 可選鏈,英文叫Optional Chaining,是表示變量、屬性等值可為空,也就是值可能為nil。若有值,...
    透支未來閱讀 619評論 0 0
  • 睡前祈禱文: 在入睡之前, 我將一切煩惱、恐懼和焦慮交托給宇宙, 我只帶著和平與愛進入夢鄉(xiāng)。 在我入睡之時到醒來之...
    平淡的飛輪閱讀 247評論 0 1

友情鏈接更多精彩內(nèi)容