在Swift程序中,结合if和let,可以方便地处理空变量(nullable variable),使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在if和while语句中来对可选类型的值进行判断并把值赋给一个常量或者变量。对于空值,需要在类型声明后添加"?",这样以显式标明该类型可以为空,示例代码如下:
var optionalString: String? = "hello"
optionalString == nil
var optionalName: String? = "John Appleseed"
var gretting = "Hello!"
if let name = optionalName { //处理空变量
gretting = "Hello, \(name)"
}
当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个感叹号表示"我知道这个可选有值,请使用它。"这被称为可选值的强制解析(forced unwrapping)。
注意:使用!来获取一个不存在的可选值会导致运行时错误,使用!来强制解析之前,一定要确定可选包含一个非nil的值,示例代码:
import Cocoa
var myString:String?
myString = "Hello, Swift!"
if myString != nil {
// 强制解析
print( myString! )
}else{
print("myString 值为 nil")
}
你可以在声明可选变量时使用感叹号(!)替换问号(?)。这样可选变量在使用时就不需要再加一个感叹号(!)来获取值,它会自动解析。