language functions for ciclo scope lua local-variables

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()