Optional
這東西是Swift特有的東西,在程式碼裡面會看到許多驚嘆號(!)與問號(?),就是來處理這東西的。
當一個值可能為nil的時候,就必須使用optional來標記它,也就是使用問號
舉一個生活上的例子來說,現在要去領錢,可是不確定還有沒有錢可以領?
這個錢可能有值(有錢可領),可能沒值(沒錢可領),你就必須在這個錢後面加入一個問號
var money : Int?
當你確定這個optional有值的時候,使用驚嘆號(!)來解開它,如果你確定這個值並不是nil
在舉一個程式上的例子,許多時候可能會想將字串轉成數值,可是並不是所有的字串都可以轉成數值,在Swift當中,字串轉數值會回傳一個optional,也許有值,也許沒值。
這樣一來應該對optional有初步的認識了。
接著你可以與If一起使用,分兩種,判斷後在解開,跟若是能解開,直接指派值。
此外,你也可以使用兩個問號(??),搭配一個變數來使用,請參考以下的程式碼
接著,nil的指派也有分幾種,大前提是這個變數必須是optional,否則不能給nil
隱性解析optional(Implicitly Unwrapped Optionals)這樣一來應該對optional有初步的認識了。
接著你可以與If一起使用,分兩種,判斷後在解開,跟若是能解開,直接指派值。
此外,你也可以使用兩個問號(??),搭配一個變數來使用,請參考以下的程式碼
接著,nil的指派也有分幾種,大前提是這個變數必須是optional,否則不能給nil
在宣告的時候就給驚嘆號(!),這樣就不必在解析的時候加入驚嘆號
當然你一樣可以針對這個optional做If的判斷之類的。
使用隱性解析optional時,你必須確定你在中途都不會將它改為nil,否則使用一般的
optional就好了。
那麼你可能會想,這東西要用在什麼時機點呢,主要是當你這個元件在創建的時期允許它為
nil,然後在非常早的階段就使它為非nil,當optional非nil要解析的時候,要使用驚嘆號標
記,每次使用都要標也太累人,因此使用隱性解析,在一開始就解開了,之後就不用使用驚
嘆號標記了。
沒有留言:
張貼留言