Swift Optionals

Yog*_*ton 3 optional swift

有人可以解释我下面的代码(出现在Apple的Swift书的第11页):

var optionalString: String? = "Hello"
optionalString = nil

var optionalName: String? = "Einav Sitton"
var greeting = "HELLO!"

if let name = optionalName {
    greeting = "Hello, \(name)"
}
Run Code Online (Sandbox Code Playgroud)

myt*_*thz 6

Swift需要显式声明可选的类型,因此第一个代码段是创建可空字符串的示例:

var optionalString: String? = "Hello"
optionalString = nil
Run Code Online (Sandbox Code Playgroud)

为了使用可以为空的字符串,需要实现它与!后缀一起使用,以便将a String?转换为String可以执行的操作:

var name : String = optionalName!
Run Code Online (Sandbox Code Playgroud)

但Swift还提供了在条件块内检查和实现可为空的简写,例如:

if let name = optionalName {
    greeting = "Hello, \(name)"
}
Run Code Online (Sandbox Code Playgroud)

这与以下相同:

if optionalName != nil {
    let name = optionalName!
    greeting = "Hello, \(name)"
}
Run Code Online (Sandbox Code Playgroud)