Как определить, из какого блока выходит охранник?
Когда guard
не выполняется условие, они выходят из закрытия. Однако, что смущает меня из того, что считается блоком, из которого выходит охранник?
Например, если у меня есть следующее:
func doThing() {
while ... {
for ... {
if ... {
guard ... else { return }
}
}
}
}
Ли guard
выйти только if
, for
, while
или весь func
?
Каково действительное правило, потому что я прочитал block
а также closure
Термины, используемые взаимозаменяемо при определении того, что guard
выходит из, но каждый термин подразумевает вещи по-своему.
1 ответ
return
оператор, используемый для выхода из ближайшего замыкания (функция в вашем случае) со значением результата (Void
по умолчанию), независимо от того, насколько глубоко вы находитесь в циклах или if
условия. Возможно, вы перепутали return
с break
,
Тем не менее, вы также можете использовать break
, continue
или же throw
заявление в else
пункт о guard
заявление. Если вы используете break
оператор, например, вы заканчиваете выполнение ближайшего цикла или switch
заявление, или, если вы отметите цикл / if
/ switch
по ярлыку и использованию break
затем с этой меткой вы выходите с помеченным заявлением.