2015年12月7日 星期一

[Swift] 第二章 - 可選(Optional)

Optional

這東西是Swift特有的東西,在程式碼裡面會看到許多驚嘆號(!)與問號(?),就是來處理這東西的。

當一個值可能為nil的時候,就必須使用optional來標記它,也就是使用問號

舉一個生活上的例子來說,現在要去領錢,可是不確定還有沒有錢可以領?

這個錢可能有值(有錢可領),可能沒值(沒錢可領),你就必須在這個錢後面加入一個問號

var money : Int?

當你確定這個optional有值的時候,使用驚嘆號(!)來解開它,如果你確定這個值並不是nil


在舉一個程式上的例子,許多時候可能會想將字串轉成數值,可是並不是所有的字串都可以轉成數值,在Swift當中,字串轉數值會回傳一個optional,也許有值,也許沒值。


這樣一來應該對optional有初步的認識了。

接著你可以與If一起使用,分兩種,判斷後在解開,跟若是能解開,直接指派值。



此外,你也可以使用兩個問號(??),搭配一個變數來使用,請參考以下的程式碼


接著,nil的指派也有分幾種,大前提是這個變數必須是optional,否則不能給nil



隱性解析optional(Implicitly Unwrapped Optionals)

在宣告的時候就給驚嘆號(!),這樣就不必在解析的時候加入驚嘆號



當然你一樣可以針對這個optional做If的判斷之類的。

使用隱性解析optional時,你必須確定你在中途都不會將它改為nil,否則使用一般的

optional就好了。

那麼你可能會想,這東西要用在什麼時機點呢,主要是當你這個元件在創建的時期允許它為

nil,然後在非常早的階段就使它為非nil,當optional非nil要解析的時候,要使用驚嘆號標

記,每次使用都要標也太累人,因此使用隱性解析,在一開始就解開了,之後就不用使用驚

嘆號標記了。