swift-可選鏈的使用

在Swift中,可選鏈(Optional Chaining)是一種訪問連接在一起的可選值屬性的方式,而不需要強(qiáng)制解包。如果其中的一個(gè)可選值是nil,那么整個(gè)可選鏈的訪問都會(huì)失敗,并且返回nil。這是一種處理可選值的安全方式,可以防止強(qiáng)制解包的運(yùn)行時(shí)錯(cuò)誤。

  • 創(chuàng)建三個(gè)類 Person 、Dog、Toy
         //
        class Person {
            var name : String  = ""
             // 可選類型 狗
            var dog : Dog?
        }

        class Dog {
            var weight : Double = 0
            //可選類型 玩具
            var toy : Toy?
        }
        
        //玩具類
        class Toy {
            var price : Double = 0.0
            func flying() {
                NSLog("飛盤在飛---")
            }
        }
        
        // 2.創(chuàng)建類的對(duì)象 并給對(duì)象屬性賦值
        let p = Person()
        p.name = "小明"
        let d = Dog()
        d.weight = 60.0
        let t = Toy()
        t.price = 20.5
        
        p.dog = d
        d.toy = t
  • 可選類型使用
        // 3. 取出小明的狗的玩具的價(jià)格
        //該寫法非常危險(xiǎn):
        let dog = p.dog
        let toy = dog?.toy
        let price = toy?.price
       
         // 該寫法非常麻煩
          if let dog = p.dog {
              if let toy = dog.toy {
                  let price = toy.price
              }
          }
       
        // ?.就是可選鏈:系統(tǒng)會(huì)自動(dòng)判斷該可選類型是否有值,如果有值,則解包,如果沒有值,則賦值為nil
        // 注意:可選鏈條獲取的值,一定是一個(gè)可選類型
        // 推薦寫法
        let price = p.dog?.toy?.price // 輸出 Double/nil
        //或者
        if let price2 = p.dog?.toy?.price {
            print(price2)
        }
        
        // 3.2  給小明的狗的玩具賦值一個(gè)新的價(jià)格
        // 如果可選鏈中有一個(gè)可選類型是沒有值的,那么這條語句直接不執(zhí)行
        p.dog?.toy?.price = 50
        
        // 3.3 可選鏈調(diào)用方法
        if let dog = p.dog {
            if let toy = dog.toy {
                toy.flying()
            }
        }
        
        p.dog?.toy?.flying()


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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