Swift 4還引入了Optional
型別,它處理缺少值。 Optional
簡單的解釋是:「有一個值,它等於x」或「根本沒有值」。
一個Optional
本身就是一種型別,實際上是Swift 4的新超級列舉之一。 它有兩個可能的值,None
和Some(T)
,其中T
是Swift 4中可用的正確資料型別的關聯值。
這是一個Optional
的整數宣告 -
var perhapsInt: Int?
下面是一個Optional
的String
宣告 -
var perhapsStr: String?
通過以下範例來了解Optional
如何在Swift 4中工作 -
var myString:String? = nil
if myString != nil {
print(myString)
} else {
print("myString has nil value")
}
當使用playground執行上述程式時,得到以下結果 -
myString has nil value
Optional
類似於在Objective-C中使用nil
和指標,但它們適用於任何型別,而不僅僅是類。
如果將變數定義為Optional
,那麼要從此變數中獲取值,必須將其解包。在變數的末尾新增一個感嘆號。
看看下面一個簡單的例子 -
var myString:String?
myString = "Hello, Swift 4!"
if myString != nil {
print(myString)
} else {
print("myString has nil value")
}
當使用playground執行上述程式時,得到以下結果 -
Optional("Hello, Swift 4!")
現在應用解包來獲取變數的正確值 -
var myString:String?
myString = "Hello, Swift 4!"
if myString != nil {
print( myString! )
} else {
print("myString has nil value")
}
當使用playground執行上述程式時,得到以下結果 -
Hello, Swift 4!
可以使用感嘆號而不是問號宣告Optional
變數。 這些Optional
變數將自動解包,您無需在變數末尾使用任何其他感嘆號來獲取指定的值。 看看一個簡單的例子 -
var myString:String!
myString = "Hello, Swift 4!"
if myString != nil {
print(myString)
} else {
print("myString has nil value")
}
當使用playground執行上述程式時,得到以下結果 -
Hello, Swift 4!
使用Optional
係結來確定Optional
項是否包含值,如果是,則使該值可用作臨時常數或變數。
if
語句的Optional
係結如下 -
if let constantName = someOptional {
statements
}
下面是一個簡單的例子來理解Optional
係結的用法 -
var myString:String?
myString = "Hello, Swift 4!"
if let yourString = myString {
print("Your string has - \(yourString)")
} else {
print("Your string does not have a value")
}
當使用playground執行上述程式時,得到以下結果 -
Your string has - Hello, Swift 4!