关键字let
用于定义Swift中的常量。但我一直在let
语句中找到if
,我一直想知道为什么会这样,或者至少对此有什么好处。
例如,在此代码中:
if !session.setActive(false, error: &error) {
println("session.setActive fail")
if let e = error {
println(e.localizedDescription)
return
}
}
为什么error
在此声明中使用let
进行了测试:if let e = error
?
我理解为什么error
需要测试,所以我们可以确保我们可以到达.localizedDesciption
,但我不明白为什么我们不能做这样的事情:
if error {
println(error.localizedDescription)
在此示例之外,我还注意到let
在许多其他if
语句中使用。这有什么好处?我很想知道背后的想法。
最后,可以var
语句以同样的方式使用if
吗?
答案 0 :(得分:2)
该过程称为可选绑定。您可以使用它来检查可选(在您的情况下为error
)是否包含值,如果是,则将该值分配给绑定常量(在您的情况下为e
)。
您也可以使用var
代替let
将值绑定到变量而不是常量:
if var error = error {
// Do something with error
println(e.localizedDescription)
return
}
请注意,我在上面的代码段中使用了相同的名称(error
)。在if
块中,error
不再是可选类型。
答案 1 :(得分:1)
您也可以使用相同的名称:
if let error = error {
println(error.localizedDescription)
return
}