Если оператор Swift 'guard' должен выйти из области действия, каково определение области действия?
Я запутался в определении блока кода или «области видимости». Документы Apple для охранника говорят так: блок else заявления о защите ...
msgstr "должен передать управление для выхода из блока кода, в котором появляется оператор охраны."
Другойинтернет-источники скажем, оператор охраны должен выйти из «области действия», в которой он существует.
Итак, возьмите пример кода ниже:
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 {....}
создает новую область видимости, а именно между {}. И, учитывая это предположение, охранник просто избежит этого. Но это не тот случай. Guard в этом случае выходит из функции, в которую она помещена, независимо от того, скрыта ли она в условии if.
Я совершенно не понимаю, что означает «сфера»? Означает ли область действия код, содержащийся в методе? Если да, то каков правильный термин для «пробела», который существует в операторе if?