守卫操作Swift 2

时间:2015-11-30 19:39:27

标签: ios swift swift2 guard-statement

我使用Swift 2和Xcode 7。

我想知道

之间的区别
new

if condition { ... } else { ... } 

3 个答案:

答案 0 :(得分:4)

当你进行可选的绑定时,真正的重大区别是:

if let x = xOptional {
    if let y = yOptional {
        // ... and now x and y are in scope, _nested_
    }
}

对比这个:

guard let x = xOptional else {return}
guard let y = yOptional else {return}
// ... and now x and y are in scope _at top level_

出于这个原因,在我开始学习之前,我经常会有一系列多个guard语句。

答案 1 :(得分:2)

if语句类似,guard基于表达式的Boolean值执行语句。与if语句不同,guard语句仅在不满足条件时运行。你可以把警卫想象成Assert,但不是崩溃,你可以优雅地退出。

参考和代码示例here

答案 2 :(得分:0)

要添加到Matt's answer,您可以在单个保护声明中包含多个条件:

guard let x = xOptional, y = yOptional else { return }
// ... and now x and y are in scope _at top level_

除了可选绑定外,保护条件还可以测试布尔结果:

guard x > 0 else { return }

简而言之,guard语句的好处是在范围的开头显示提前退出,而不是在嵌套的else语句中进一步隐藏条件。