在Lua中创建局部变量

时间:2012-02-01 16:30:13

标签: lua

如果我有一个变量名(例如“x”)存储在另一个变量中(本例中为varname),我可以通过

创建一个全局变量
_G[varname]=42

这是一种复杂的说法

x=42

现在我想对局部变量做同样的事情。有可能吗?

2 个答案:

答案 0 :(得分:11)

不,因为局部变量不存储在表中,也不存储在将其名称与其关联的任何结构中。当lua代码被编译成字节码时,局部变量名称会变成lua堆栈上的数字偏移量。

答案 1 :(得分:3)

如果您确实需要使用字符串来修改局部变量,那么最好的选择是使用本地表。

local localVars = {}

function setValue(varname, value)
  localVars[varname] = value
end

function getValue(varname)
  return localVars[varname]
end

你并不是真的以这种方式创建和销毁局部变量,但是你会非常接近。