2016-06-12 265 views
-1

我想創建一個沒有值的Int(一個已經存在的變量)。如果我這樣做;Int沒有值(將int設置爲無值)

number = Int() 

那麼它仍然具有值0。我什麼都不需要,一個不存在的價值。

+2

唯一的方法是可選的'Int?' – vadian

+1

您需要選項:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/ uid/TP40014097-CH5-ID330 – Moritz

+0

'var number:Int?' –

回答

9

每個類型實際上可以設置爲空值又名nil這個環節!

要創建一個可設置爲nil的變量,您需要在末尾明確寫入類型名稱?!(我將在後面討論這些差異)。

例如,如果你想要,可以設置爲nilInt,聲明與類型名稱的變量:

var myInt: Int 

,然後添加一個?

var myInt: Int? 

然後,你可以設置myIntnil,或任何你想要的值:

myInt = nil 
myInt = 0 

這種類型名稱與?符號在Swift中被稱爲「可選類型」。

您不僅可以使用自選的變量和常量,你也可以在方法/函數簽名使用它:

func myUselessFunc(value: Int?) -> Int? { 
    return value 
} 

好了,什麼是!?之間的區別?

!的行爲與Java和C#中的引用類型相似。而?就像是更安全的版本!

比方說,有一個可選的IntmyInt。你想訪問它的description

如果myInt被宣佈爲let myInt: Int?

myInt?.description 

如果myInt被宣佈爲let myInt: Int!

myInt.description 

注意問號,你需要在每一次最後加一個問號您需要訪問myInt的財產/方法。這稱爲「解包可選類型」。

帶有!後綴的類型稱爲「隱式解包可選類型」。使用這些類型時,您不需要打開它。但是,如果myIntnil,則會出現錯誤!這在?類型中不會發生,因爲如果myIntnil,則整個表達式將僅返回nil

這只是我認爲在第一次使用optionals時應該注意的事項。