对于全局_G[name]变量,name如果您有一个字符串"name",则可以使用它来访问全局变量:
function setGlobal(name, val)
_G[name] = val
end
Run Code Online (Sandbox Code Playgroud)
如果你有
-- module.lua
local var1
local var2
Run Code Online (Sandbox Code Playgroud)
没有_L,这将允许你做当地人的等价物:
function setLocal(name, val)
_L[name] = val -- _L doesn't exist
end
Run Code Online (Sandbox Code Playgroud)
是否有另一种方法可以通过表示其名称的字符串访问本地变量?
您可以使用debug.gelocal(),并debug.setlocal()在debug图书馆:
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
Run Code Online (Sandbox Code Playgroud)
测试:
local var1
local var2
setLocal("var1", 42)
print(var1)
Run Code Online (Sandbox Code Playgroud)
输出: 42