“?”表示可选类型(Optionals)
“!”表示隐式可选类型(全名:implicitly unwrapped optionals),其实还是可选类型。
Swfit语言定义后缀 ?作为命名类型Optional的简写,换句话说,以下两种声明是相等的:
var optionalInteger: Int?
var optionalInteger: Optional<Int>
强制解析
当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号 "!" 来获取值。这个感叹号表示"我知道这个可选有值,请使用它。"这被称为可选值的强制解析(forced unwrapping)。
示例如下:
import Cocoa
var myString:String?
myString = "Hello, Swift!"
if myString != nil {
// 强制解析
print( myString! )
}else{
print("myString 值为 nil")
}