2012-08-22 24 views
0

在我開始之前,我會說我是Lua的初學者,所以可能不知道所有正確的術語,但我會盡我所能解釋我所追求的。如何在Lua中自動創建變量?

我有一個包含其他表的表(data)。 當第一次創建data時,它可以有任意數量的表格(我預計它在1到50之間)。

我想將每個表分配給它自己的變量。

如果我知道有多少表,那麼這很容易使用table1 = data[1]; table2 = data[2]等等。

我已經完成了data的計數,以便知道條目數量,因此我想要自動創建變量,給它們一個名稱併爲其分配相應的表格。可以說data包含10個表。然後我想創建一個名爲table1table2,table3等的變量。 table1應該是,table2應該是data[2]等等。

我確定我應該創建一個循環,並且每次都有一個count=count+1來創建附加到變量的數字。

我的問題是,我不知道如何創建一個名爲'table'+counttable1)的變量。

我該如何加入2?

+0

如何是它有用嗎?這將花費2倍的內存(因此,內存效率低下)。 – hjpotter92

+0

我更好奇你打算如何使用這些變量。你想解決什麼問題需要這個功能?這聽起來像一個[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –

+0

這可能是一個XY問題。正如我所說,我仍在學習。數據中包含的每個表格包含相同的5個字段,但具有不同的值。我不需要大部分數據..但是此刻想要在每個表中的字段3中添加所有值。 –

回答

0

你不能,很少有編程語言支持這個和那些通過反射這樣做。

最簡單的方法是保持桌子的桌子!您所有的表格都已經存儲在那裏,您可以通過使用數據[x] 輕鬆地引用特定表格當您這樣做時,您可以僅使用索引來引用表格。

7

創建具有構造名的全局變量的方法是更新全局表_G

_G['table'..count] = data[count] 

例如,

Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio 
> count = 3 
> _G['table'..count] = 17 
> = table3 
17 
> 
+0

雖然不是使用count(並創建一個不必要的變量),爲什麼不爲'i = 1,#data do _G ['table'.. i] = data [i] end'?在我看來,更有意義。 – Josh

+0

爲了讓它更清楚,也許我應該說'for count = 1,#data do _G ['table'.. count] = data [count] end' - 但我只是解決了如何製作一個全局變量,而不是如何做一個循環。 –