Wenn die 'guard'-Anweisung von Swift den Gültigkeitsbereich verlassen muss, wie wird der Gültigkeitsbereich definiert?
Ich bin verwirrt über die Definition eines Codeblocks oder des Bereichs. Apple Docs for Guard sagen Folgendes: Der else-Block einer Guard-Anweisung ...
"muss die Kontrolle übertragen, um den Codeblock zu verlassen, in dem die guard-Anweisung erscheint."
Andereonline sources Sagen wir, die guard-Anweisung muss den Gültigkeitsbereich verlassen, in dem sie existiert.
Nehmen Sie den folgenden Beispielcode:
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()
Nach meinem derzeitigen Verständnis von "Umfang" ist der Code
if y == 2 {....}
erstellt einen neuen Bereich, nämlich zwischen {}. Und unter dieser Annahme würde sich die Wache lediglich diesem Umfang entziehen. Das ist aber nicht der Fall. Guard verlässt in diesem Fall die Funktion, in der es platziert ist, unabhängig davon, ob es in einer if-Klausel enthalten ist.
Bin ich völlig missverstanden, was "Umfang" bedeutet? Bedeutet Geltungsbereich den in einer Methode enthaltenen Code? Wenn ja, wie lautet der korrekte Begriff für den 'Raum', der in einer if-Anweisung vorhanden ist?