Clauses de garde
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 68 sur 78.
Lorsqu’une fonction doit effectuer plusieurs vérifications, imbriquer un if dans un autre repousse le véritable travail de plus en plus profondément :
func buy(gold: int, price: int) -> String:
if price > 0:
if gold >= price:
return "Bought! %d gold left" % (gold - price)
else:
return "Not enough gold"
else:
return "Invalid price"Une clause de garde inverse la logique. Elle vérifie un cas invalide au début de la fonction et quitte immédiatement avec return. Le code après les clauses de garde s’exécute uniquement avec des valeurs valides, sans avoir besoin d’imbrication :
func buy(gold: int, price: int) -> String:
if price <= 0:
return "Invalid price"
if gold < price:
return "Not enough gold"
return "Bought! %d gold left" % (gold - price)buy(50, 30) renvoie Bought! 20 gold left, buy(10, 30) renvoie Not enough gold et buy(50, 0) renvoie Invalid price.
L’ordre des gardes compte : la garde qui protège une ligne doit la précéder. Vérifie le texte avec is_valid_int() avant d’utiliser le nombre, et vérifie que la valeur n’est pas zéro avant de diviser :
func share(coins: int, players: int) -> int:
if players <= 0:
return 0
return coins / playersDans une fonction -> void, une garde est un return à lui seul. Dans une boucle, continue agit comme une garde pour un élément : il ignore un élément invalide et la boucle passe au suivant.
Défi
FacileÉcris la fonction process_data. Elle prend une chaîne de caractères text et renvoie une chaîne de caractères :
- Si
textn’est pas un nombre entier, renvoieInput must be a number! - Si le nombre est
0, renvoieCannot divide by zero! - Sinon, divise
100.0par le nombre et renvoie le résultat avec deux décimales
Par exemple, process_data("8") renvoie 12.50, process_data("-5") renvoie -20.00 et process_data("abc") renvoie Input must be a number!.
Écris les deux vérifications sous forme de clauses de garde au début de la fonction.
Essayez vous-même
func process_data(text: String):
# Écrivez le code ici
pass
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes de caractères en profondeur
Méthodes des chaînesRechercher dans les chaînesRemplacer et supprimer les espacesDécouper et joindreRécapitulatif - Vérifier un nom d’utilisateur4Dictionnaires, partie 2
Dictionnaires imbriquésTableaux de dictionnairesFusionner des dictionnairesCopier des dictionnairesRécapitulatif - Compteur de fréquence7Énumérations
Qu’est-ce qu’une énumération ?Définir une énumérationValeurs d’une énumérationÉnumérations avec matchRécapitulatif - Feu de circulation10Fonctions avancées
Renvoyer plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Récapitulatif - Tri avec lambdaFonctions récursives, partie 1Fonctions récursives, partie 2Récapitulatif - Somme d’un tableau imbriqué13Système de gestion des stocks
Présentation du projetAjouter un article2Prise de décision avancée
Correspondance avec des variablesGardes de correspondanceMotifs de tableauMotifs de dictionnaireVérifications d’appartenanceRécapitulatif – Analyseur de commandes5Application de carnet d’adresses
Afficher le menuAjouter un contact8Gestionnaire des dossiers étudiants
Aperçu du projetAjouter un étudiant3Tableaux multidimensionnels
Bases des tableaux 2DAccéder aux éléments d’un tableau 2DBoucles imbriquées avec des tableaux 2DRécapitulatif - Tableaux 2DTableaux irréguliersMotifs courants des tableaux 2DRécapitulatif - Plateau de jeu6Les ensembles avec les dictionnaires
Qu’est-ce qu’un ensemble ?Un dictionnaire comme ensembleAjouter et supprimerUnion et intersectionDifférence d’ensemblesRécapitulatif – Supprimer les doublons9Agrégation avancée de données
Additionner des valeursTrouver le minimum et le maximumTri personnaliséRécapitulatif - Trieur de dictionnaires12Gestion de base des erreurs
Qu’est-ce que la gestion des erreurs ?Valider les entréesClauses de gardeRenvoyer des codes d’erreurRécapitulatif : division sécuriséeEntraînez-vous par vous-même : Compilateur GDScript en ligne