我对代码块或"范围"的定义感到困惑.苹果公司的卫士文件说:保护声明的其他部分......
"必须转移控制以退出出现保护声明的代码块."
其他在线消息来源称,守卫声明必须退出其存在的"范围".
所以请参考下面的示例代码:
func testGuardControlFlow () {
let x = 2
let y = 2
func embededFunc () {
if y == 2 {
guard x == 1 else {
print("oops, number is not 1")
return
}
print ("from in embededFunc")
}
print ("I still want this to print even if x != 1")
}
embededFunc()
print("Great, return still allows this to be printed.")
}
testGuardControlFlow()
Run Code Online (Sandbox Code Playgroud)
根据我目前对'范围'的理解,代码
if y == 2 {....}
Run Code Online (Sandbox Code Playgroud)
创建一个新的范围,即{}之间.并且考虑到这个假设,后卫只会逃避这个范围.但事实并非如此.此实例中的Guard不会放置它所放置的函数,而不管它是否隐藏在if子句中.
我完全误解了"范围"的含义吗?范围是指方法中包含的代码吗?如果是这样,if语句中存在的'space'的正确术语是什么?