Gardes de correspondance
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 7 sur 78.
Une garde ajoute une condition à un motif. Écris when, puis une condition après le motif : le motif ne correspond que si la valeur correspond au motif et si la condition est true. Les gardes existent depuis Godot 4.4.
var hp := 15
match hp:
0:
print("Defeated")
var h when h < 20:
print("Low health: ", h)
_:
print("Healthy")Low health: 15GDScript ne possède pas de motifs de plage tels que 1..10. Un motif de liaison avec une garde remplit cette fonction : var h when h < 20: correspond à chaque valeur inférieure à 20 et la nomme h.
Lorsqu’une garde est false, match passe au motif suivant. Les motifs sont testés de haut en bas, donc l’ordre détermine quel bloc s’exécute :
var temp := 32
match temp:
var t when t <= 0:
print("Freezing")
var t when t < 15:
print("Cold")
var t when t < 30:
print("Warm")
_:
print("Hot")HotLe deuxième motif n’a pas besoin de t > 0 : une température de 0 ou moins correspondait déjà au premier. Une garde peut utiliser n’importe quelle condition, avec d’autres variables et and ou or, et s’adapte à n’importe quel motif : 5 when hard_mode: correspond à 5 uniquement lorsque hard_mode vaut true.
Défi
FacileLe programme lit un âge sous forme d’entier dans age. Utilise une instruction match avec des gardes pour afficher le groupe d’âge :
- de
0à12:Child - de
13à19:Teenager - de
20à64:Adult - de
65à120:Senior - Tout autre nombre :
Invalid age
Chaque intervalle inclut ses deux bornes. Pour l’entrée 15, la sortie est :
TeenagerEssayez vous-même
extends Node
func _ready():
var age := int(OS.read_string_from_stdin())
# Affiche la tranche d’âge avec match et des gardes
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 dictionnairesEntraînez-vous par vous-même : Compilateur GDScript en ligne