Correspondance avec des variables
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 6 sur 78.
Dans la leçon Instruction Match, chaque motif était une valeur littérale, comme 1: ou "bow":. Un motif peut aussi être une constante ou une variable : match compare la valeur à ce que contient ce nom lorsque la ligne s’exécute :
const SECRET := 42
var guess := 42
match guess:
SECRET:
print("You found it!")
_:
print("Try again")You found it!Le deuxième nouveau motif est le motif de liaison : var suivi d’un nouveau nom. Comme _, il correspond à n’importe quelle valeur, et il stocke également cette valeur dans la nouvelle variable, que tu peux utiliser dans son bloc :
var level := 5
match level:
1:
print("Tutorial")
var n:
print("Level %d is locked" % n)Level 5 is lockedUn motif de liaison est particulièrement utile lorsque vous faites correspondre le résultat d’une expression, qui n’a pas de nom propre :
var roll_a := 4
var roll_b := 6
match roll_a + roll_b:
12:
print("Double six!")
var total:
print("You rolled ", total)You rolled 10Un motif de liaison correspond à tout, il vient donc en dernier, comme _. Son nom doit être nouveau : var level: dans le deuxième exemple provoquerait une erreur, car level existe déjà. Il ne peut pas non plus partager une ligne avec d’autres motifs séparés par des virgules.
match compare les types strictement : la chaîne "5" ne correspond pas au motif 5, et le flottant 5.0 non plus. Convertis le texte lu depuis l’entrée avec int() avant de le comparer à des nombres.
Défi
FacileÉcris un test de devinette d’un nombre. La constante SECRET contient le nombre secret, et le programme lit la proposition du joueur comme un entier dans guess.
Écris une instruction match sur guess avec trois motifs :
- La constante
SECRET: afficheCorrect! 0: afficheYou gave up.- Un motif de liaison pour toute autre proposition : affiche la proposition suivie de
is not the number.
Pour l’entrée 17, la sortie est :
17 is not the number.Essayez vous-même
extends Node
func _ready():
const SECRET := 42
var guess := int(OS.read_string_from_stdin())
# Écrivez l’instruction match ci-dessous
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