2014-11-24 78 views
-1

是否可以使用for循環來動態命名變量?一些諸如:for循環中動態創建的變量

t = {} 

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

我實際的問題是由一個Wireshark的剝離動態創建protofields的,但如果以上是不可能的,我懷疑protofield問題將有可能

回答

2

只要做t[i]。這將索引表(t)的值爲i

local t = {} 

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

(請注意,在Lua,foo.bar是短期的foo["bar"]。還要注意,串"123"是從該數123不同)

-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 [名字]被用於全局變量(至少在魔法符文中)。

如果_G [name]返回錯誤,請改爲嘗試setglobal(name)。

+0

我有示例表是一個多dementional表,〜37條目。我希望能夠遍歷表格併爲每個條目創建一個變量,這些變量稍後將用於創建wireshark protofield。所以最後,我會有一個變量t.1到t.37,然後可以用在解剖器 – Hls 2014-11-24 16:20:04

+0

'_G [「t」]'很愚蠢。只要做't',即't [i]'。在香草Lua中也沒有'setglobal'這樣的函數。 – 2014-11-24 18:01:56