在 Swift 中的 if 语句中使用 let

Jim*_*ery 3 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
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么在这个语句error中用 a 进行测试: ?letif let e = error

我明白为什么error需要测试,这样我们就可以确保我们能够做到这一点.localizedDesciption,但我不明白为什么我们不能这样做:

    if error {
        println(error.localizedDescription)
Run Code Online (Sandbox Code Playgroud)

除了这个例子之外,我还注意到它let被用在许多其他if语句中。这样做有什么好处呢?我很想知道其背后的想法。

最后,可以同样的方式var用在语句中吗?if

Mar*_*ulz 5

该过程称为可选绑定。您使用它来检查可选(error在您的情况下)是否包含值,如果是,则将该值分配给绑定常量(e在您的情况下)。

您还可以使用var代替let将值绑定到变量而不是常量:

if var error = error {
    // Do something with error
    println(error.localizedDescription)
    return
}
Run Code Online (Sandbox Code Playgroud)

error请注意,我在上面的代码片段中使用了相同的名称 ( )。在if块内,error不再是可选类型。

  • 建议阅读:[可选绑定](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_503) (2认同)