天天看點

Swift學習——Swift解釋具體的基礎(六)

Optionals    可選

可選(它似乎并不如此翻譯)它适用于那些值這種情況可能是空的,有兩種情況一個可選:存在值并等于x,要麼值不存在。

選配的概念在OC和C裡面并沒有。在OC中最接近的概念就是:OC中的傳回值為對象的函數。當對象不存在的時候,能夠傳回nil,可是nil僅僅能代表對象,不能夠代表基礎類型或者結構體和枚舉類型。OC中使用NSNotFound表示值不存在。

在Swift中,不須要使用其它的類型表示不存在的值。

舉個樣例:

在Swift中,String類型有一個方法叫做toInt,可是并非全部的String都能夠轉換成Int的。

由于toInt可能會失敗。它會傳回一個可選的Int類型(寫作 Int?)而不是Int類型,表示這個傳回值能夠是一個Int類型的值。也有可能沒有值。

If Statements and Forced Unwrapping    if條件語句和強制解析

你能夠使用IF條件語句推斷一個選配裡面有沒有值,一旦你确定了選配中含有值,你能夠在選配的名稱後面加上一個感歎号(!),表示我知道這個選配裡面含有值。這個過程被稱為選配值的強制解析。

在使用!之前,一定要保證配選值裡面存儲着真的值。不為空。

Optional Binding    可選綁定

你能夠使用可選綁定推斷一個可選值裡面是否有值,假設有值,能夠将這個值作為常量或者變量。能夠使用if或者while語句進行推斷和指派。

能夠重寫上面的強制解析,使用可選綁定進行推斷一個選配值是否為空:

上述過程能夠了解為:

假設possibleNumber.toInt獲得的選配整型包括值。那就定義一個常量actualNumber用來存儲這個值。

假設轉換成功,actualNumber在if的第一個條件中可用,它已經被初始化包括可選值。不須要使用!

來訪問它的值。

在可選綁定的過程中,你能夠使用變量也能夠使用常量。

nil    空值

假設定義常量和變量的時候沒有進行指派。那麼預設的值就是nil

注意:Swift中間nil和OC中間nil代表的意義是不一樣的,OC中間nil它不是對象指針的一種特定類型的,在Swift在nil它是一種特定類型的空省值。不管可選什麼類型的值它可以被設定為nil,如果對象類型是不一定。