嗨,大家好,我是 Lacie,您現在收看的是 Swift - 來吧!鐵人三十項 系列的第十八篇
在鐵人賽完結後,為保持持續做筆記的習慣
將會在我的 Medium 繼續撰寫文章,若有興趣者可前往觀看。
在 Swift 中,常常會看到一堆 ? 或 ! 滿天飛
很多時候就算你少加了,IDE 還會很好心的自動提示你要修正
但這樣就太靠 IDE 了,必須自己實際玩玩看
故今天要來複習及弄懂的東西是 - Optional
從它的英文名字就可以知道,它叫「可選擇的」,也正呼應了它是一個可以有或者沒有的特性,那這是什麼意思呢,讓我們看下去
很多人會把 Optional 形容成一個封起來的箱子,我覺得這個比喻還滿不錯的,在箱子被打開之前,你不知道裡面到底有東西還是沒東西
打開來的時候,裡面有可能是長這樣:
也有可能長這樣:
也有可能沒東西:
是的,上面的圖片已經解說了 Optional 的概念
要注意的是,箱子裡沒東西的時候,我們會叫它是 nil(空值)
nil 代表的是沒有值,而「沒有值」不代表它是 0,因爲 0 也是值
那要如何宣告一個變數成為 Optional 呢,直接舉個例子來看
因為不是每個人都有養貓,故可能有貓名,也可能沒有(在資料型態後加上 ? 即可讓此變數成為 Optional):
如果你沒有給這個變數一個值的話,那它會自動被預設為是 nil:
也可以在之後改變這個變數的值(因為還未解開箱子,故它顯示為 Optional):
也可以在之後把它改回 nil:
直接來看看生活中會遇到的案例,例如型別轉換的時候:
奇怪,我又沒加 ?,它怎麼會說它是 Optional 呢?
因為在 String 轉換到 Int 的過程中,是有可能沒辦法轉換的,有可能 nil 的狀況:
宣告時因為預設就是 nil,所以可以加也可以不用加:
想要使用 Optional 就必須打開箱子
下集就來複習如何打開 Optional 這個箱子的各種方式