Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在lua中访问全局变量_Lua_Global Variables_Local Variables - Fatal编程技术网

在lua中访问全局变量

在lua中访问全局变量,lua,global-variables,local-variables,Lua,Global Variables,Local Variables,我有下面的Lua代码: a, b = 1, 10 if a<b then print(a) local a print(a) end print(a, b) a,b=1,10 如果a在对局部变量使用相同名称后,使用\u ENV.a访问全局变量 注意,Lua 5.1及以下版本使用\u G 编辑,刚刚测试过这个: a, b = 1, 10 if a<b then local a = 12 print(a) -- Will print 12

我有下面的Lua代码:

a, b = 1, 10
if a<b then
    print(a)
    local a
    print(a)
end
print(a, b)
a,b=1,10

如果a在对局部变量使用相同名称后,使用
\u ENV.a
访问全局变量

注意,Lua 5.1及以下版本使用
\u 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
a,b=1,10

如果athat听起来很混乱,而且容易出错。@Pieget看看答案,plz。这个问题合乎逻辑,所以有人可以回答。不是你的问题。我的意思是以这种方式重用变量名。这很危险,代码也很难修改read@Piglet我明白了,建议如下:)一旦你完成了代码并希望尽可能地减少它,重复使用变量名就有点意义了,像这样,只有这么多的字母和单词,如果lua让我们重复使用其中的一些。伟大的虽然您正在测试和执行类似的工作,但我建议使用更详细的变量名以避免混淆。@Kershrew我还有另一个问题:如果我将局部变量添加到第一行变量a中,如何执行相同的操作?可能吗?在这种情况下,第一个a将是整个块的本地a(但不能通过then块中的_ENV.a或_G.a访问),第二个a始终是then的本地ablock@SWIIWIIlocal使变量集位于当前范围内_ENV将始终访问您设置的顶级全局变量,您可以使用局部变量进一步重用该变量名。虽然说实话,我不知道你为什么不停止混淆自己,对变量使用不同的名称。:)@Kershrew我在官方的lua教程中找到了这段代码,我只想知道在所有可能的情况下局部变量和全局变量的所有用法,这只是出于好奇:)我当然知道对局部变量和全局变量使用相同的名称是非常尴尬的:)