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 lockedUn 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 10Un 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.
Desafío
FácilEscribe 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: imprimeCorrect! 0: imprimeYou 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
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
1Cadenas de texto en profundidad
Métodos de cadenasBúsqueda en cadenasReemplazar y eliminar espaciosDividir y unirRepaso - Comprobación del nombre de usuario4Diccionarios, parte 2
Diccionarios anidadosArrays de diccionariosCombinar diccionariosCopiar diccionariosRepaso: contador de frecuencias7Enumeraciones
¿Qué es una enumeración?Definir una enumeraciónValores de una enumeraciónEnumeraciones en matchRepaso: semáforo10Funciones avanzadas
Devolver múltiples valoresFunciones lambda, parte 1Funciones lambda, parte 2Repaso: ordenar con lambdaFunciones recursivas, parte 1Funciones recursivas, parte 2Repaso: sumar un array anidado13Sistema de gestión de inventario
Descripción general del proyectoAñadir artículo2Toma de decisiones avanzada
Coincidencia con variablesGuardas de coincidenciaPatrones de arraysPatrones de diccionariosComprobaciones de pertenenciaRepaso: analizador de comandos5Aplicación de agenda de contactos
Mostrar menúAñadir contacto8Gestor de expedientes estudiantiles
Descripción del proyectoAgregar estudiante3Arrays multidimensionales
Conceptos básicos de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DRepaso: arrays 2DArrays irregularesPatrones comunes de arrays 2DRepaso: tablero de juego6Conjuntos con diccionarios
¿Qué es un conjunto?El diccionario como conjuntoAñadir y eliminarUnión e intersecciónDiferencia de conjuntosRepaso: eliminar duplicados9Agregación avanzada de datos
Suma de valoresCómo encontrar el mínimo y el máximoOrdenación personalizadaRepaso: organizador de diccionariosPractica por tu cuenta: Compilador de GDScript online