當時在學 Swift 時,一直搞不懂為什麼要加上!及?;對於 nil 存在的意義更是讓我困惑,更別說知道要怎麼用,所以今天就來談談 Optional 及 nil 吧!
Optional 及 nil
我們可以利用 Optional 來處理沒有值得情況。其實 Optional 就是一個枚舉
(enum),它含有兩種情況—可能有值 或是 沒有值。
而 Swift 裡的 nil 是空值,這個 nil 不是 0 ,因為 0 也是值,存在的意義是「當無值時的替代品」。
可以在一開始宣告 Optional 的時候,在型別的後面加上「?」,變數便宣告成為無值的狀態,也就是 nil。
注意!宣告常數或是變數為 nil 時,一定要宣告「型別」並加上「?」!否則會出現紅色錯誤。
・宣告 Optional 又稱為 Wrapped,像是包起來一樣。
讀取 Optional
強制解包
當我們想要讀取 Optional 的值時,我們要在後面加上「!」。還記得前面的 Wrapped 嗎?現在我們要將它解開來(Unwrapped),這個過程我們稱之為 強制解包-Force-unwrap 。
使用 if 語法檢查 Optional 裡有沒有值
我們可以用 if 語法以及「==」和「!=」比較 nil 來判斷 Optional 是否有值。
判斷取值
我們也可以用 if let 語法來判斷 Optional 裡面有沒有值
自動取值
在一開始宣告的型別上加上「!」,就可以讓程式一開始就去讀取他的值。
但是這種方式要用在「確定」變數裡面有值,如果沒有值,程式是會錯誤的喔!
替 nil 提供預設值
想要在 Optional 無值時給預設值嗎?用「??」就好拉!