如果我有一个变量名(例如“x”)存储在另一个变量中(本例中为varname),我可以通过
创建一个全局变量_G[varname]=42
这是一种复杂的说法
x=42
现在我想对局部变量做同样的事情。有可能吗?
答案 0 :(得分:11)
不,因为局部变量不存储在表中,也不存储在将其名称与其关联的任何结构中。当lua代码被编译成字节码时,局部变量名称会变成lua堆栈上的数字偏移量。
答案 1 :(得分:3)
如果您确实需要使用字符串来修改局部变量,那么最好的选择是使用本地表。
local localVars = {}
function setValue(varname, value)
localVars[varname] = value
end
function getValue(varname)
return localVars[varname]
end
你并不是真的以这种方式创建和销毁局部变量,但是你会非常接近。