Menu
CoddyTech

Motifs de tableau

Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 8 sur 78.

Un motif de tableau s’écrit comme un littéral de tableau. Il correspond à un tableau de même taille dont les éléments correspondent un à un. Chaque élément du motif peut être un littéral, _ ou une liaison :

var point := [0, 7]
match point:
	[0, 0]:
		print("Origin")
	[0, var y]:
		print("On the y-axis at ", y)
	[var x, var y]:
		print("Point ", x, ", ", y)
On the y-axis at 7

La taille doit être la même : [var x, var y] ne correspond pas à [1, 2, 3]. Placez .. comme dernier élément pour autoriser un nombre quelconque d’éléments supplémentaires (y compris zéro), et écrivez [] pour un tableau vide :

var cmd := ["give", "sword", "Ana"]
match cmd:
	[]:
		print("Nothing typed")
	["give", var item, ..]:
		print("Giving ", item)
Giving sword

Les gardes fonctionnent aussi avec les motifs de tableaux : [var a, var b] when a == b: correspond à deux éléments égaux.

Les motifs de tableau ne correspondent qu’au type Array. Le PackedStringArray renvoyé par split() ne leur correspond jamais. Stocke le résultat dans une variable déclarée comme Array, ce qui le convertit :

var words: Array = "go north".split(" ")
match words:
	["go", var dir]:
		print("Heading ", dir)
Heading north
challenge icon

Défi

Facile

Le programme lit un point écrit sous la forme x,y et le stocke dans le tableau point sous forme de deux entiers (déjà écrit). Utilise une instruction match avec des motifs de tableau pour afficher où se trouve le point, en appliquant la première règle qui correspond :

  • Les deux valent 0 : Origin
  • x vaut 0 : On the y-axis at y= suivi de y
  • y vaut 0 : On the x-axis at x= suivi de x
  • x et y sont égaux : On the diagonal at suivi de la valeur
  • Tout autre cas : Point at (x, y) avec les deux valeurs

Pour l’entrée 0,5, la sortie est :

On the y-axis at y=5

Pour l’entrée 2,7, c’est :

Point at (2, 7)

Essayez vous-même

extends Node

func _ready():
	var parts := OS.read_string_from_stdin().split(",")
	var point := [int(parts[0]), int(parts[1])]
	# Faire correspondre point aux motifs de tableau
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