在Swift中的if语句中使用let

时间:2014-11-05 11:12:17

标签: if-statement swift

关键字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吗?

2 个答案:

答案 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
 }