Énumérations avec match
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 40 sur 78.
Une instruction match peut comparer une valeur aux options d’une énumération. Chaque motif est une option, écrite avec son nom d’énumération :
enum Light { RED, YELLOW, GREEN }
func _ready():
var light := Light.YELLOW
match light:
Light.RED:
print("Stop")
Light.YELLOW:
print("Slow down")
Light.GREEN:
print("Go")Cela affiche Slow down. Comme dans chaque match, plusieurs options peuvent partager une branche, séparées par des virgules, et _ intercepte tout le reste :
match light:
Light.RED, Light.YELLOW:
print("Wait")
_:
print("Go")Une fonction qui renvoie une valeur doit contenir un return dans chaque branche. Même lorsque les branches couvrent toutes les options, GDScript signale Not all code paths return a value, sauf si le match comporte une branche _ ou qu’un return le suit :
func next_light(light: Light) -> Light:
match light:
Light.RED:
return Light.GREEN
Light.GREEN:
return Light.YELLOW
_:
return Light.REDLe paramètre et le type de retour sont l’énumération Light. La fonction est déclarée au niveau supérieur, comme l’énumération.
Défi
FacileLe script déclare l’énumération State avec les options IDLE, WALK, RUN, JUMP et FALL. Complète la fonction describe() : elle reçoit un état et renvoie sa description, choisie avec un match :
State.IDLE:"Standing still"State.WALKetState.RUN:"Moving"State.JUMPetState.FALL:"In the air"
Utilise une branche pour WALK et RUN, et une autre pour JUMP et FALL. Le code fourni dans _ready() lit une ligne de noms d’états et affiche chacun d’eux avec sa description. Pour l’entrée IDLE RUN FALL, la sortie est :
IDLE: Standing still
RUN: Moving
FALL: In the airEssayez vous-même
extends Node
enum State { IDLE, WALK, RUN, JUMP, FALL }
func describe(state: State):
# Renvoie la description de l'état à l'aide d'un match
pass
func _ready():
var names := OS.read_string_from_stdin().split(" ", false)
for state_name in names:
print(state_name, ": ", describe(State[state_name]))
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