Swift4 Day-02 Option 和 nil

Albert
3 min readAug 29, 2018

--

當時在學 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 無值時給預設值嗎?用「??」就好拉!

今天的Optional就到這裡囉!如果有其他的問題歡迎留言給我!\(*´∀`)/

--

--