当guard
失败时,他们退出关闭。然而,让我感到困惑的是什么被认为是卫兵退出的阻挡?
例如,如果我有以下内容:
func doThing() {
while ... {
for ... {
if ... {
guard ... else { return }
}
}
}
}
guard
只退出if
,for
,while
或整个func
吗?
实际规则是什么,因为我在定义block
退出的内容时可以互换地使用closure
和guard
个术语,但每个术语都以不同的方式暗示事物。< / p>
答案 0 :(得分:1)
return
语句用于从结果值(默认情况下为Void
)退出最近的闭包(在您的情况下为函数),无论您在周期或if
条件下有多深。可能你将return
与break
混为一谈。
但是,您也可以在break
语句的continue
子句中使用throw
,else
或guard
语句。例如,如果您使用break
语句,则结束最近周期或switch
语句的执行,或者,如果您mark cycle/if
/switch
by label并使用break
后跟该标签,则退出标记声明。