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 7El 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 swordLas 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 northDesafío
FácilEl 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 xes0:On the y-axis at y=seguido deyyes0:On the x-axis at x=seguido dexxeyson iguales:On the diagonal atseguido 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=5Para 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
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