一、解析:
Swift 的可選(Optional)類型义锥,用于處理值缺失的情況⊙颐穑可選表示"那兒有一個(gè)值拌倍,并且它等于 x "或者"那兒沒有值"。
二川背、聲明
Swfit語言定義后綴贰拿?作為命名類型Optional的簡(jiǎn)寫,換句話說熄云,以下兩種聲明是相等的:
var optionalInteger: Int?
var optionalInteger: Optional<Int>
三膨更、強(qiáng)制解析
當(dāng)你確定可選類型確實(shí)包含值之后,你可以在可選的名字后面加一個(gè)感嘆號(hào)(!)來獲取值缴允。這個(gè)感嘆號(hào)表示"我知道這個(gè)可選有值荚守,請(qǐng)使用它珍德。"這被稱為可選值的強(qiáng)制解析(forced unwrapping)。
實(shí)例如下:
import Cocoa
var myString:String?
myString = "Hello, Swift!"
if myString != nil {
print(myString)
}else{
print("myString 值為 nil")
}
以上程序執(zhí)行結(jié)果為:
Optional("Hello, Swift!")
強(qiáng)制解析可選值矗漾,使用感嘆號(hào)(!):
import Cocoa
var myString:String?
myString = "Hello, Swift!"
if myString != nil {
// 強(qiáng)制解析
print( myString! )
}else{
print("myString 值為 nil")
}
以上程序執(zhí)行結(jié)果為:
Hello, Swift!
注意:
使用!來獲取一個(gè)不存在的可選值會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤锈候。使用!來強(qiáng)制解析值之前,一定要確定可選包含一個(gè)非nil的值敞贡。
四泵琳、自動(dòng)解析
你可以在聲明可選變量時(shí)使用感嘆號(hào)(!)替換問號(hào)(?)。這樣可選變量在使用時(shí)就不需要再加一個(gè)感嘆號(hào)(!)來獲取值誊役,它會(huì)自動(dòng)解析获列。
實(shí)例如下:
import Cocoa
var myString:String!
myString = "Hello, Swift!"
if myString != nil {
print(myString)
}else{
print("myString 值為 nil")
}
以上程序執(zhí)行結(jié)果為:
Hello, Swift!
五、可選綁定
使用可選綁定(optional binding)來判斷可選類型是否包含值蛔垢,如果包含就把值賦給一個(gè)臨時(shí)常量或者變量击孩。可選綁定可以用在if和while語句中來對(duì)可選類型的值進(jìn)行判斷并把值賦給一個(gè)常量或者變量鹏漆。
像下面這樣在if語句中寫一個(gè)可選綁定:
if let constantName = someOptional {
statements
}
讓我們來看下一個(gè)簡(jiǎn)單的可選綁定實(shí)例:
import Cocoa
var myString:String?
myString = "Hello, Swift!"
if let yourString = myString {
print("你的字符串值為 - \(yourString)")
}else{
print("你的字符串沒有值")
}
以上程序執(zhí)行結(jié)果為:
你的字符串值為 - Hello, Swift!