【发布时间】:2014-06-12 17:21:08
【问题描述】:
从 Apple 发布的 Swift 书中,我们可以通过放置 ?像
这样的变量var optionalString: String? = "Hello"
optionalString == nil
还写道:“您可以使用 if 和 let 一起处理可能丢失的值。”
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, \(name)"
}
上面写的代码用来检查可选值是否为nil,如果 optionalName 为nil,它就不会进去。
但不使用 let like 也可以做到这一点
if optionalName {
greeting = "Hello, \(optionalName!)"
}
为什么书中建议使用 let?
【问题讨论】:
-
我一直在想同样的事情。虽然使用
if let避免了必须解开(可能多次)if块中的值,但避免(1)必须包含额外的语法和(2)提出一个新变量似乎仍然更短您的可选名称,根据我的经验,这只是将firstName变成theFirstName缺乏创造力。 -
你被字符串插值接受可选项的能力所迷惑。如果在该字符串之外使用了
optionalName,则必须使用optionalName!.useMeSomehow()显式解包它。用 let 绑定它,可以节省你在块内的那一步。 -
你错过了'!'在您的第二个代码示例中。应为:greeting = "Hello, (optionalName!)"
-
让返回一个布尔值...所以只有在选项检查出时才进入块...它是糖
标签: swift