我對代碼塊或'範圍'的定義感到困惑。蘋果公司的警告說:這是另一個警衛聲明塊...如果Swift'guard'語句必須退出範圍,範圍的定義是什麼?
「必須傳輸控制以退出出現警戒語句的代碼塊」。
其他online sources表示警戒聲明必須存在它所在的'範圍'。
因此,採取下面的示例代碼:
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()
根據我目前的 '範圍' 的理解,代碼
if y == 2 {....}
創建一個新的範圍,即在{}。考慮到這個假設,後衛只會逃避這個範圍。但事實並非如此。在這個例子中,守衛從其被放置的功能中逃脫出來,而不管它是否被埋在if子句中。
我完全誤解'範圍'的含義嗎?範圍意味着包含在方法中的代碼嗎?如果是這樣,if語句中存在的「空間」的正確術語是什麼?
要求是else子句離開當前範圍。 'return'通過留下當然會留下當前範圍的整個函數來滿足要求。沒有必要在else子句中使用'return'。其他的東西會起作用,比如「繼續」。 – vacawama