Menu
CoddyTech

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: 15

GDScript 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")
Hot

Le 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.

challenge icon

Défi

Facile

Le 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 :

Teenager

Essayez 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
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur GDScript en ligne