警卫与否则

时间:2017-08-11 20:47:35

标签: swift

我知道guard在Swift中的作用。我已阅读有关使用guardif let的问题。但是,guard (condition) else { return }if !condition { return }之间有什么区别吗?他们似乎做同样的事情。

编辑:这不是询问guard letif let。我现在知道guard letguard更有用。我只是在问一个简单的guardif之间的区别。

3 个答案:

答案 0 :(得分:1)

如果需要在guard语句中声明变量,即

,则存在差异

guard let foo = bar else { return }

在这种情况下,您可以继续在方法的其余部分中将foo用作非可选项。你不能用简单的if语句来做到这一点。

如果你想知道为什么那么方便:

if let because = nobody {
    if let likes = pyramids {
        if let of = doom {
            // guard can help you avoid this!
        }
    }
}

答案 1 :(得分:0)

他们将达到同样的效果。

为了便于阅读,在方法顶部设置一个保护声明可让人们知道此值必须在此处继续。很容易发现,而不是if语句

答案 2 :(得分:0)

如果您没有声明变量并且范围仅包含该单个语句,则没有太大区别。

但是,当您根据另一个较长变量的存在创建变量时,guard会派上用场。

使用guard let,您可以在同一范围内使用创建的变量。

使用if let,您只能在if语句块中使用创建的变量。