我知道guard
在Swift中的作用。我已阅读有关使用guard
或if let
的问题。但是,guard (condition) else { return }
和if !condition { return }
之间有什么区别吗?他们似乎做同样的事情。
编辑:这不是询问guard let
和if let
。我现在知道guard let
对guard
更有用。我只是在问一个简单的guard
和if
之间的区别。
答案 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
语句块中使用创建的变量。