从 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?
最佳答案
您的第二个代码片段在功能上与书中的代码片段相同。但是,本书建议使用 let
来避免对可选值进行多次解包。
由于您正在检查 optionalName
是否为空,因此可以安全地假设您计划在条件 block 内使用它。当您这样做时,Swift 需要再次从 optionalName
中解包可选值,因为该变量仍然是可选的。
当您在 let
声明中将 optionalName
赋值给 name
时,您指定的 name
常量回来是不是可有可无的。这为您节省了 if
语句中的解包。
关于swift - 在可选值中使用 let 以及 if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24190340/