J'ai l'extrait de garde suivant, qui génère l'erreur «Le corps de garde ne peut pas tomber à travers». Qu'est-ce qui ne va pas?
guard NSFileManager.defaultManager().fileExistsAtPath(appBundlePath) else {
print("App bundle doesnt exist")
}
L’instruction guard
doit avoir un élément permettant d’éloigner le flux du programme de la portée englobante (par exemple, le cas le plus probable est que return
renvoie la fonction). Cela est nécessaire car la condition de garde n'est pas valide, le flux du programme doit donc aller ailleurs!
La clause else d'une instruction guard est obligatoire et doit être appelée une fonction marquée avec l'attribut noreturn ou le programme de transfert contrôle en dehors de la portée englobante de la déclaration de garde en utilisant l’un des fichiers les déclarations suivantes:
- revenir
- pause
- continuer
- jeter
Pensez à utiliser une instruction return
Une instruction return apparaît dans le corps d'une définition de fonction ou de méthode et entraîne le retour de l'exécution du programme à la fonction ou à la méthode appelante.
Voici l'exemple de ce qui a été expliqué dans les réponses ci-dessus pour le rendre plus clair.
déclaration de garde dans le cadre plus externe du programme.
guard false else {
print("Condition is not true ")
}
print("Condition met")
ce code s produit cette déclaration d'erreur
error: If guard statement.playground: 1: 1: erreur: le corps 'guard' ne peut pas échouez, envisagez d'utiliser un 'retour' ou un 'lancer' pour sortir du scope
Le message d'erreur dans Word simple signifie que vous devez transférer le contrôle de programme de l'instruction Guard à l'aide d'instructions return, break, continue ou throw.
avec déclaration de contrôle de transfert de retour
guard false else {
print("Condition is not true")
return
}
print("Condition met")
sortie en console
Condition remplie