在for循环中动态创建变量

时间:2014-11-24 15:31:37

标签: lua wireshark wireshark-dissector

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

t = {} 

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

我的实际问题包括为wireshark解剖器动态创建protofields,但如果上述情况不可行,我怀疑protofield问题是否可能

2 个答案:

答案 0 :(得分:2)

t[i]。这将使用值t将表格i)编入索引。

local t = {}

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

(请注意,在Lua中,foo.barfoo["bar"]的缩写。另请注意,字符串"123"与数字123不同)

答案 1 :(得分:-1)

我不能完全理解您的问题,但请尝试以下操作:

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"变量

_G [name]使用全局变量(至少在魔法符文中)。

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