scope - functions - Lua-Alcance variable local en función
repeat in lua (2)
Obtiene nil en el primer ejemplo porque no se ha visto ninguna declaración para a
cuando se usa a, por lo que el compilador declara que se trata de un global. Establecer a
derecho antes de llamar a test
funcionará. Pero no lo hará si declara a
local como local.
Tengo la siguiente función
function test()
local function test2()
print(a)
end
local a = 1
test2()
end
test()
Esto imprime nada
El siguiente script
local a = 1
function test()
local function test2()
print(a)
end
test2()
end
test()
imprime 1.
No entiendo esto. Pensé que declarar una variable local lo hace válido en todo su bloque. Dado que la variable ''a'' se declara en el alcance de la función test (), y la función test2 () - se declara en el mismo ámbito, ¿por qué no test2 () tiene acceso a la variable local test?
test2
tiene acceso a variables que ya han sido declaradas. El orden importa Entonces, declara a
antes de test2
:
function test()
local a; -- same scope, declared first
local function test2()
print(a)
end
a = 1;
test2() -- prints 1
end
test()