在for循环中动态创建变量

是否有可能使用 for 循环动态命名变量?例如:

t = {}

For i in ipairs(tablename) do
   t.i = something
End

我的实际问题是动态创建 Wireshark 分析器的 protofields,但如果上面的方法不可行,我怀疑 protofield 问题也无法解决。

点赞
用户2491556
用户2491556

我不是完全理解你的问题,但是请尝试以下两种解决方法:

t = {}

for i in ipairs(tablename) do
    _G["t"][i] = tablename[i];
end

或者,如果你的意思是(我觉得你的意思是)创建包含数字的变量名:

 local tablename = {"a", "b"}

 for i in ipairs(tablename) do
      _G["t"..i] = tablename[i];
 end

这样你就会得到变量“t1”和“t2”。

在 Runes of Magic 中,_G[name] 用于访问全局变量。

如果 _G[name] 返回错误,请尝试使用 setglobal(name)。

2014-11-24 16:03:15
用户646619
用户646619

只需执行 t[i]。这将用值 i 对表 (t) 进行索引。

local t = {}

for i, _ in ipairs(othertbl) do
    t[i] = something
end

(请注意,在 Lua 中,foo.bar表示 foo["bar"]。另请注意,字符串“123”与数字123不同)

2014-11-24 18:05:20