访问lua中的全局变量

SWI*_*WII 3 lua global-variables local-variables

我有一个Lua代码如下:

a, b = 1, 10
if a<b then
    print(a)
    local a
    print(a)
end
print(a, b)
Run Code Online (Sandbox Code Playgroud)


只是一个小问题:

首先,我创建了一个全局变量a = 1;

然后在then块中我使用全局变量a来打印它;

然后我声明了一个未初始化的局部变量a(因此得到的值为nil)

然后我的问题来了:在then块中创建了局部变量a后,我怎样才能访问全局变量a,这是可能的?如果是这样,请给我一个答案:)

Ker*_*rew 5

使用_ENV.a使用相同的名称为当地一个后访问全局变量!

注意,Lua版本5.1及以下版本使用 _G

编辑,刚试过这个:

a, b = 1, 10
if a<b then
    local a = 12
    print(a) -- Will print 12
    print(_ENV.a) -- Will print 1
end
print(a, b) -- Will print 1 10
Run Code Online (Sandbox Code Playgroud)

它工作正常,给了我所需的输出参考_ENV.a

  • 在这个例子中,`_G.a`也有效. (2认同)