swift3.0中?和!的學習理解心得

  咱們在學習swift的時候常常會有各類的?和!  看了不少帖子而且使用程序員

其實 咱們的?和!的區別和使用大概就是:--------- 定義可選項使用「?「  而 強行解包的時候用「!」,準備計算。swift

(1)原始的可選項定義:none沒有值,或者some某一類值  let x:Optional = 10  xcode

(2)簡單的可選項定義:用「?」 意思是可能沒有值,也可能有一個值 let y:Int? = 40 函數

上面兩個輸出的值print(x) print(y)都是打印出這樣Optional(10) 等等學習

(3)若是print(x+y)那麼不一樣類型之間不能夠直接運算 若是nil不是任何數據類型 不能參與計算調試

(4)上面的第(2)條裏的 若是賦值爲nil那麼在打印print(y)的時候會報錯 found nil……意思是解包時候發現了nil值code

(5)程序員能夠在解包的時候y!添加這個符號 意思是從可選值中強行獲取對應的非空值,若是真的是nil 那麼就會崩潰 io

程序少用!而且程序員要對!負責 由於一旦用了!那麼運行的時候報錯直接崩潰。而第(4)條的是編譯時候就提示有錯編譯

 

另外還有一點是 用!和?的好處是程序不會在由於nil值得錯誤像oc裏同樣直接崩潰在main函數中了 這點是oc裏的缺憾處。如今swift加以改進 從而在咱們調試的時候xcode編譯就不會經過 就會提示爲空  若是咱們非要加上!那麼就會在編譯經過可是運行報錯數據類型

 

 

let的可選值沒有默認值  var的可選值默認爲nil

相關文章
相關標籤/搜索