本文介绍了通过名称访问局部变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
对于全局变量,如果您有字符串名称",则可以使用_G[name]
访问全局变量name
:
With globals you can use _G[name]
to access the global variable name
if you have a string "name":
function setGlobal(name, val)
_G[name] = val
end
如果有
-- module.lua
local var1
local var2
没有_L
可以让您对本地人做同样的事情:
there is no _L
that would allow you to do the equivalent for locals:
function setLocal(name, val)
_L[name] = val -- _L doesn't exist
end
还有另一种方式可以通过代表其名称的字符串访问局部变量吗?
Is there another way that you could access a local variable by string representing its name?
推荐答案
您可以在debug.gelocal()和debug.setlocal()
. html#6.10"rel =" noreferrer> debug
库:
You can use debug.gelocal()
and debug.setlocal()
in the debug
library:
function setLocal(name, val)
local index = 1
while true do
local var_name, var_value = debug.getlocal(2, index)
if not var_name then break end
if var_name == name then
debug.setlocal(2, index, val)
end
index = index + 1
end
end
测试:
local var1
local var2
setLocal("var1", 42)
print(var1)
输出:42
这篇关于通过名称访问局部变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!