在Lua中创建本地变量

如果我有一个变量名(例如 "x")存储在另一个变量中(在此示例中为 varname),我可以通过如下方式创建全局变量:

_G[varname]=42

这是一种复杂的方式,可以简单地表示为

x=42

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

原文链接 https://stackoverflow.com/questions/9099448

点赞
stackoverflow用户726361
stackoverflow用户726361

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

2012-02-01 16:43:58
stackoverflow用户312586
stackoverflow用户312586

如果你确实需要使用字符串来修改局部变量,你最好使用一个局部表。

local localVars = {}

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

function getValue(varname)
  return localVars[varname]
end

这种方法并不是真正地创建和销毁局部变量,但效果很接近。

2012-02-02 00:24:06