《從零開始學Swift》學習筆記(Day 28)——總結使用問號(?)和感嘆號(!)

智捷關東昇發表於2016-03-16

原創文章,歡迎轉載。轉載請註明:關東昇的部落格

在使用可選型別和可選鏈時,多次使用了問號(?)和感嘆號(!),但是它們的含義是不同的,下面我來詳細說明一下。

  1. 可選型別中的問號(?)
    宣告這個型別是可選型別,訪問這種型別的變數或常量時要使用感嘆號(!),下列程式碼是顯示拆包:

    let result1: Double? = divide(100, 200)     
    print(result1!)         
    
  2. 可選型別中的感嘆號(!)
    宣告這個型別也是可選型別,但是訪問這種型別的變數或常量時可以不使用感嘆號(!),下列程式碼是隱式拆包:

    let result3: Double! = divide(100, 200)  
    print(result3)             
    
  3. 可選鏈中的感嘆號(!)
    多個例項具有關聯關係,當從一個例項引用另外例項的方法、屬性和下標等成員時就會形成引用鏈,由於這個“鏈條”某些環節可能有值,也可能沒有值,因此需要採用如下方式訪問:

    emp.dept!.comp!.name
    
  4. 可選鏈中的問號(?)
    在可選鏈中使用感嘆號(!)訪問時,一旦“鏈條”某些環節沒有值,程式就會發生異常,我們把感嘆號(!)改為問號(?),程式碼如下所示:

    emp.dept?.comp?.name
    

這樣某些環節沒有值的時候返回nil,程式不會發生異常。

歡迎關注關東昇新浪微博@tony_關東昇。 關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程資訊

enter image description here

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

相關文章