iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
自我挑戰組

Swift - 來吧!鐵人三十項系列 第 18

Day18:當天的鐵人當天寫 - Optional(1)

  • 分享至 

  • xImage
  •  

前前言

嗨,大家好,我是 Lacie,您現在收看的是 Swift - 來吧!鐵人三十項 系列的第十八篇
在鐵人賽完結後,為保持持續做筆記的習慣
將會在我的 Medium 繼續撰寫文章,若有興趣者可前往觀看。


前言

在 Swift 中,常常會看到一堆 ? 或 ! 滿天飛
很多時候就算你少加了,IDE 還會很好心的自動提示你要修正
但這樣就太靠 IDE 了,必須自己實際玩玩看
故今天要來複習及弄懂的東西是 - Optional

從它的英文名字就可以知道,它叫「可選擇的」,也正呼應了它是一個可以有或者沒有的特性,那這是什麼意思呢,讓我們看下去


Optional

很多人會把 Optional 形容成一個封起來的箱子,我覺得這個比喻還滿不錯的,在箱子被打開之前,你不知道裡面到底有東西還是沒東西

打開來的時候,裡面有可能是長這樣:

也有可能長這樣:

也有可能沒東西:

是的,上面的圖片已經解說了 Optional 的概念
要注意的是,箱子裡沒東西的時候,我們會叫它是 nil(空值)
nil 代表的是沒有值,而「沒有值」不代表它是 0,因爲 0 也是值


宣告 Optional

那要如何宣告一個變數成為 Optional 呢,直接舉個例子來看

因為不是每個人都有養貓,故可能有貓名,也可能沒有(在資料型態後加上 ? 即可讓此變數成為 Optional):

如果你沒有給這個變數一個值的話,那它會自動被預設為是 nil:

也可以在之後改變這個變數的值(因為還未解開箱子,故它顯示為 Optional):

也可以在之後把它改回 nil:


案例

直接來看看生活中會遇到的案例,例如型別轉換的時候:

奇怪,我又沒加 ?,它怎麼會說它是 Optional 呢?

因為在 String 轉換到 Int 的過程中,是有可能沒辦法轉換的,有可能 nil 的狀況:


其他

  1. 宣告時因為預設就是 nil,所以可以加也可以不用加:

  2. 想要使用 Optional 就必須打開箱子

下集就來複習如何打開 Optional 這個箱子的各種方式


上一篇
Day17:當天的鐵人當天寫 - Function(2)
下一篇
Day19:當天的鐵人當天寫 - Optional(2)
系列文
Swift - 來吧!鐵人三十項30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言