Menu
CoddyTech

Patrones de arrays

Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 8 de 78.

Un patrón de array se escribe como un literal de array. Coincide con un array del mismo tamaño cuyos elementos coinciden uno por uno. Cada elemento del patrón puede ser un literal, _ o una vinculación:

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

El tamaño debe ser el mismo: [var x, var y] no coincide con [1, 2, 3]. Coloca .. como último elemento para permitir cualquier cantidad de elementos adicionales (incluido cero), y escribe [] para un arreglo vacío:

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

Las guardas también funcionan con patrones de arreglos: [var a, var b] when a == b: coincide con dos elementos iguales.

Los patrones de array solo coinciden con el tipo Array. El PackedStringArray que devuelve split() nunca coincide con ellos. Guarda el resultado en una variable declarada como Array, lo que lo convierte:

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

Desafío

Fácil

El programa lee un punto escrito como x,y y lo almacena en el array point como dos enteros (ya escrito). Usa una instrucción match con patrones de array para imprimir dónde está el punto, usando la primera regla que coincida:

  • Ambos son 0: Origin
  • x es 0: On the y-axis at y= seguido de y
  • y es 0: On the x-axis at x= seguido de x
  • x e y son iguales: On the diagonal at seguido del valor
  • Cualquier otro caso: Point at (x, y) con los dos valores

Para la entrada 0,5, la salida es:

On the y-axis at y=5

Para la entrada 2,7, es:

Point at (2, 7)

Pruébalo tú mismo

extends Node

func _ready():
	var parts := OS.read_string_from_stdin().split(",")
	var point := [int(parts[0]), int(parts[1])]
	# Compara point con patrones de arrays
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de GDScript online