如果某些可选参数不是nil,执行代码的最佳方法是什么?显然,最明显的方法是直接检查该值是否为nil:
if optionalValue != nil {
//Execute code
}
我还看到了以下内容:
if let _ = optionalValue {
//Execute code
}
第二个似乎更快捷,因为它使用了可选的链接。使用一种方法相对于另一种方法有什么优势?有更好的方法吗?无论如何,我的意思是“更符合Swift”。
最佳答案
如果您确实需要未包装的值,则应使用可选的绑定(bind)。这是较长表达的捷径,我认为应该以这些术语考虑。实际上,在swift 1.2中,此可选绑定(bind)表达式:
if let unwrapped = optional {
println("Use the unwrapped value \(unwrapped)")
}
是这样的代码的语法糖(请记住,可选参数实际上是
Optional<T>
枚举的实例):switch optional {
case .Some(let unwrapped):
println("Use the unwrapped value \(unwrapped)")
case .None:
break
}
使用可选绑定(bind)而不将未包装的值分配给变量,就像有一个盒子里面可能装有电视。如果您要检查盒子是否为空,则不要将电视机从盒子中取出-只需打开盒子并向里看即可。
因此,如果您需要在某个变量不是nil的情况下执行一些代码,但是您不需要或不使用可选变量中包含的实际值,那么我认为not-nil检查是最好的方法它。