Saltar al contenido

¿Cómo Crear Asignaciones y Estructuras de Control en Lua?

6 junio, 2019

Lua es similar a Pascal o C. Este conjunto incluye asignaciones, estructuras de control, llamadas a funciones y declaraciones de variables. ¿Cómo Crear Asignaciones y Estructuras de Control en Lua?

Lua es un lenguaje potente, eficiente, ligero e integrable. Soporta la programación de procedimientos, orientada a objetos entre otros.

¿Cómo Crear Asignaciones y Estructuras de Control en Lua?

Los programadores con frecuencia necesitan poder almacenar valores en la memoria para poder usarlos más tarde. Esto se hace utilizando variables.

Las variables son referencias a un valor que se almacena en la memoria de la computadora. Se pueden usar para acceder a un número más tarde después de almacenarlo en la memoria.

Asignación es la instrucción que se utiliza para asignar un valor a una variable. Consiste en el nombre de la variable en la que debe almacenarse el valor, un signo igual y el valor que debe almacenarse en la variable:

variable = 43
print(variable) --> 43

Como se demuestra en el código anterior, se puede acceder al valor de una variable colocando el nombre de la variable donde se debe acceder al valor.

Lua Permite Múltiples Asignaciones

Por lo tanto, la sintaxis para la asignación define una lista de variables en el lado izquierdo y una lista de expresiones en el lado derecho. Los elementos en ambas listas están separados por comas.

stat :: = varlist `= ´ explist
varlist :: = var {`, ´ var}
explist :: = exp {`, ´ exp}

Antes de la asignación, la lista de valores se ajusta a la longitud de la lista de variables. Si hay más valores de los necesarios, los valores en exceso se desechan.

Si hay menos valores de los necesarios, la lista se amplía con tantos nulos como sea necesario. Si la lista de expresiones finaliza con una llamada de función.

Todos los valores devueltos por esa llamada ingresan a la lista de valores antes del ajuste (excepto cuando la llamada se encuentra entre paréntesis).

i = 3
i, a[i] = i+1, 20
Establece un [3] a 20, sin afectar a un [4] porque la i en a [i] se evalúa (a 3) antes de que se le asigne 4. Del mismo modo, la línea
x, y = y, x
Intercambia los valores de x y y, y
x, y, z = y, z, x
Permuta cíclicamente los valores de x, y, y z.

El significado de las asignaciones a variables globales y campos de tabla se puede cambiar a través de metatables. Una asignación a una variable indexada t [i] = val es equivalente a settable_event (t, i, val).

Una asignación a una variable global x = val es equivalente a la asignación _env.x = val, que a su vez es equivalente.

settable_event (_env, "x", val)

Donde _env es el entorno de la función en ejecución.

Una asignación a una variable global x = val es equivalente a la asignación _env.x = val, que a su vez es equivalente.

settable_event (_env, "x", val)

Donde _env es el entorno de la función en ejecución.

Estructuras de Control

Las estructuras de control if, while y repeat tienen el significado habitual.

stat ::= while exp do block end
stat ::= repeat block until exp
stat ::= if exp then block {elseif exp then block} [else block] en

La expresión de condición de una estructura de control puede devolver cualquier valor. Tanto falso como nulo son considerados falsos.

Todos los valores diferentes de nil y false se consideran verdaderos (en particular, el número 0 y la cadena vacía también son verdaderos).

En el ciclo de repetición hasta, el bloque interno no termina en la palabra clave hasta, sino solo después de la condición. Por lo tanto, la condición puede referirse a variables locales declaradas dentro del bloque de bucle.

La declaración de retorno se usa para devolver valores de una función o un fragmento (que es solo una función). Las funciones y los fragmentos pueden devolver más de un valor.

stat ::= return [explist]

La instrucción break se usa para terminar la ejecución de un tiempo, repetir o para bucle, saltando a la siguiente.

stat ::= break

Una ruptura termina el bucle envolvente más interno

Las declaraciones de retorno y ruptura solo se pueden escribir como la última declaración de un bloque. Si es realmente necesario regresar o romper en medio de un bloque.

Entonces se puede usar un bloque interno explícito, como en los modismos los términos devuelven final y rompen final, porque ahora return y break son las últimas declaraciones en su (interior) ) bloques.

Para la Declaración

La declaración for tiene dos formas: una numérica y una genérica. El numérico para bucle repite un bloque de código mientras una variable de control se ejecuta a través de una progresión aritmética.

stat ::= for Name `=´ exp `,´ exp [`,´ exp] do block end

El bloque se repite para el nombre que comienza en el valor de la primera exp, hasta que pasa la segunda exp por pasos de la tercera exp.

for v = e1, e2, e3 do block end