Menu
CoddyTech

Coincidencia con variables

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

En la lección Sentencia Match, todos los patrones eran valores literales, como 1: o "bow":. Un patrón también puede ser una constante o una variable: match compara el valor con lo que contiene ese nombre cuando se ejecuta la línea:

const SECRET := 42
var guess := 42
match guess:
	SECRET:
		print("You found it!")
	_:
		print("Try again")
You found it!

El segundo patrón nuevo es el patrón de vinculación: var seguido de un nombre nuevo. Al igual que _, coincide con cualquier valor y también almacena ese valor en la nueva variable, que puedes usar dentro de su bloque:

var level := 5
match level:
	1:
		print("Tutorial")
	var n:
		print("Level %d is locked" % n)
Level 5 is locked

Un patrón de vinculación resulta más útil cuando comparas el resultado de una expresión, que no tiene nombre propio:

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 10

Un patrón de vinculación coincide con todo, así que va al final, como _. Su nombre debe ser nuevo: var level: en el segundo ejemplo sería un error, porque level ya existe. Tampoco puede compartir una línea con otros patrones separados por comas.

match compara los tipos de forma estricta: la cadena "5" no coincide con el patrón 5, y el flotante 5.0 tampoco. Convierte el texto leído de la entrada con int() antes de compararlo con números.

challenge icon

Desafío

Fácil

Escribe una comprobación para adivinar un número. La constante SECRET contiene el número secreto, y el programa lee la suposición del jugador como un entero en guess.

Escribe una instrucción match sobre guess con tres patrones:

  • La constante SECRET: imprime Correct!
  • 0: imprime You gave up.
  • Un patrón de vinculación para cualquier otra suposición: imprime la suposición seguida de is not the number.

Para la entrada 17, la salida es:

17 is not the number.

Pruébalo tú mismo

extends Node

func _ready():
	const SECRET := 42
	var guess := int(OS.read_string_from_stdin())
	# Escribe la sentencia match a continuación
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