Intentando entender el Match
Match
de https://docs.godotengine.org/es/stable/tutorials/scripting/gdscript/gdscript_basics.html#match
match¶
La expresión match se usa para bifurcar la ejecución del programa. Es el equivalente de la expresión switch encontrada en otros lenguajes de programación, pero ofrece funcionalidades adicionales.
Sintaxis básica:
match [expression]:
[pattern](s):
[block]
[pattern](s):
[block]
[pattern](s):
[block]
Curso rápido para las personas familiarizadas con las expresiones switch:
Reemplace "switch'' con " match''.
Elimina "case".
Elimina todos los
break. Si no quieres que la ejecución se detenga por defecto, puedes usarcontinuepara continuar la ejecución en cascada.Cambia
defaultpor un guión bajo.
Control del flujo:
Los patrones se comparan desde arriba hacia abajo. Si el patrón
coincide, el bloque correspondiente se ejecuta. Después de eso, la
ejecución continua por debajo de la declaración match. Si quieres seguir recorriendo hacia abajo la expresión, puedes usar continue para detener la ejecución del bloque actual y comprobar el siguiente patrón.
Hay 6 tipos de patrones:
- Patrón constante
Primitivas constantes, como números y cadenas
match x: 1: print("We are number one!") 2: print("Two are better than one!") "test": print("Oh snap! It's a string!")
- Patrón de variables
Coincide con el contenido de una variable / enum
match typeof(x): TYPE_REAL: print("float") TYPE_STRING: print("text") TYPE_ARRAY: print("array")
- Patrón comodín
Este patrón busca emparejar cualquier cosa. Se escribe con un guión bajo.
Se puede usar como el equivalente del `` valor predeterminado '' en una declaración de `` cambio '' en otros idiomas
match x: 1: print("It's one!") 2: print("It's one times two!") _: print("It's not 1 or 2. I don't care to be honest.")
- Patrón vinculante
Un patrón de enlace introduce una nueva variable. Al igual que el patrón comodín, coincide con todo, y también le da un nombre a ese valor. Es especialmente útil en patrones de matriz y diccionario
match x: 1: print("It's one!") 2: print("It's one times two!") var new_var: print("It's not 1 or 2, it's ", new_var)
- Patrón de matriz
Coincide con una matriz. Cada elemento individual del patrón de matriz es un patrón en sí mismo, por lo que puede anidarlos.
Se comprueba primero la longitud del array, este tiene que tener el mismo tamaño que el patrón, de otra manera no habrá coincidencia.
** Matriz abierta **: una matriz puede ser más grande que el patrón haciendo el último subpatrón `` ..``.
Cada subpatrón tiene que estar separado por comas.
match x: []: print("Empty array") [1, 3, "test", null]: print("Very specific array") [var start, _, "test"]: print("First element is ", start, ", and the last is \"test\"") [42, ..]: print("Open ended array")
- Patrón de diccionario
Funciona de la misma manera que el patrón de array. Cada clave tiene que ser un patrón de constante.
Se comprueba primero el tamaño del diccionario y tiene que ser igual al del patrón, de otro modo el patrón no coincidirá.
** Diccionario abierto **: un diccionario puede ser más grande que el patrón haciendo el último subpatrón `` ..``.
Cada sub-patrón tiene que estar separado por comas.
Si no especificas un valor, solo se comprobará la existencia de la clave.
Un patrón de valor se separa del patrón clave con un ``: ``.
match x: {}: print("Empty dict") {"name": "Dennis"}: print("The name is Dennis") {"name": "Dennis", "age": var age}: print("Dennis is ", age, " years old.") {"name", "age"}: print("Has a name and an age, but it's not Dennis :(") {"key": "godotisawesome", ..}: print("I only checked for one entry and ignored the rest")
- Patrones múltiples
También puede especificar múltiples patrones separados por una coma. No se permite que estos patrones tengan enlaces en ellos.
match x: 1, 2, 3: print("It's 1 - 3") "Sword", "Splash potion", "Fist": print("Yep, you've taken damage")
---------------------
Match para sustituir if anidados.
Esta mejor explicado el Match GDSCRIPT en 5 minutos MATCH Condicional ep 7 https://www.youtube.com/watch?v=PvL_TTRwcmA
Comentarios
Publicar un comentario