English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Antes de usar una variable, debe declararse en el código, es decir, crear la variable.
Antes de ejecutar el código, el compilador necesita saber cómo asignar un área de almacenamiento para las variables de la instrucción, para almacenar los valores de las variables.
Las variables en Lua tienen tres tipos: variables globales, variables locales y dominios de la tabla.
En Lua, todas las variables son variables globales, incluso dentro de bloques de instrucciones o funciones, a menos que se declaren explícitamente como variables locales con local.
El ámbito de una variable local es desde la posición de declaración hasta el final del bloque de instrucciones en el que se encuentra.
El valor predeterminado de todas las variables es nil.
-- Script de archivo test.lua a = 5 -- Variable global local b = 5 -- Variable local function joke() c = 5 -- Variable global local d = 6 -- Variable local end joke() print(c, d) --> 5 nil do local a = 6 -- Variable local b = 6 -- Reasignación de variables locales print(a, b); --> 6 6 end print(a, b) --> 5 6
El resultado de ejecutar el ejemplo anterior es:
$ lua test.lua 5 nil 6 6 5 6
La asignación es el método más básico para cambiar el valor de una variable y modificar los dominios de la tabla.
a = "hello" .. "world" t.n = t.n + 1
Lua puede asignar múltiples variables simultáneamente, y los elementos de la lista de variables y la lista de valores se separan por comas. Los valores a la derecha de la instrucción de asignación se asignan sucesivamente a las variables a la izquierda.
a, b = 10, 2*x <--> a =10; b =2*x
Al encontrar una instrucción de asignación, Lua primero calcula todos los valores a la derecha y luego ejecuta la operación de asignación, por lo que podemos intercambiar los valores de las variables de la siguiente manera:
x, y = y, x -- swap 'x' for 'y' a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[j]'
Cuando el número de variables y el número de valores no coinciden, Lua adopta la siguiente estrategia en función del número de variables:
a. El número de variables > El número de valores Se completará con nil según el número de variables b. El número de variables < El número de valores Los valores adicionales se ignorarán
a, b, c = 0, 1 print(a, b, c) --> 0 1 nil a, b = a+1, b+1, b+2 -- value of b+2 is ignored print(a, b) --> 1 2 a, b, c = 0 print(a, b, c) --> 0 nil nil
El último ejemplo anterior es un caso de error común, preste atención: si debe asignar a múltiples variables, debe asignar a cada variable en orden.
a, b, c = 0, 0, 0 print(a, b, c) --> 0 0 0
La asignación múltiple se utiliza a menudo para intercambiar variables o asignar el retorno de una función a variables:
a, b = f()
f() devuelve dos valores, el primero se asigna a a, el segundo a b.
Debería usar variables locales lo más posible, lo que tiene dos beneficios:
1. Evitar conflictos de nombres.
2. La velocidad de acceso a variables locales es más rápida que la de variables globales.
Se utiliza corchetes [] para índices de table. Lua también ofrece el operador .
t[i] t.i -- es una forma simplificada cuando el índice es de tipo cadena gettable_event(t,i) -- Acceder a índices mediante esencialmente una llamada a función similar
> site = {} > site["key"] = "es.oldtoolbag.com" > print(site["key"]) es.oldtoolbag.com > print(site.key) es.oldtoolbag.com