如果某些可选项不是nil,那么执行代码的最佳方法是什么?显然,最明显的方法是直接检查值是否为零:
if optionalValue != nil {
//Execute code
}
我也看到了以下内容:
if let _ = optionalValue {
//Execute code
}
第二个似乎更符合swift,因为它使用可选链接。使用一种方法比另一种方法有什么好处吗?有没有更好的方法呢?更好的是,我的意思是“更符合斯威夫特”,不管这意味着什么。
答案 0 :(得分:7)
如果您确实需要未包装的值,则应使用可选绑定。这是一个更长时间表达的捷径,我认为应该用这些术语来思考。事实上,在swift 1.2这个可选的绑定表达式中:
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
}
使用可选绑定而不将未包装的值分配给变量就像有一个可能包含电视的盒子。如果您的目的是验证包装盒是否为空,则不要从包装盒中取出电视 - 只需打开包装盒即可看到内部。
所以,如果你需要执行一些代码,如果变量不是nil,但你不需要也不使用可选变量中包含的实际值,那么在我看来,not-nil检查是最好的这样做的方法。