Variables 如何在Lua中自动创建变量?

Variables 如何在Lua中自动创建变量?,variables,loops,automation,lua,Variables,Loops,Automation,Lua,在我开始之前,我会说我是Lua的初学者,所以可能不知道所有正确的术语,但我会尽我所能解释我所追求的 我有一个包含其他表的表(data)。 当第一次创建数据时,它可以包含任意数量的表(我希望它在1到50之间) 我想将每个表分配给它自己的变量 如果我知道有多少个表,那么使用table1=data[1]就很容易了;表2=数据[2]等等 我已经对数据进行了计数,这样我就知道了条目的数量,所以我要做的是自动创建变量,给它们一个名称,并为其分配相应的表 因此,假设数据包含10个表。然后我希望创建名为tabl

在我开始之前,我会说我是Lua的初学者,所以可能不知道所有正确的术语,但我会尽我所能解释我所追求的

我有一个包含其他表的表(
data
)。 当第一次创建
数据时,它可以包含任意数量的表(我希望它在1到50之间)

我想将每个表分配给它自己的变量

如果我知道有多少个表,那么使用
table1=data[1]就很容易了;表2=数据[2]
等等

我已经对
数据进行了计数
,这样我就知道了条目的数量,所以我要做的是自动创建变量,给它们一个名称,并为其分配相应的表

因此,假设
数据
包含10个表。然后我希望创建名为
table1
table2
table3
等的变量<代码>表1
应该是
数据[1]
表2
应该是
数据[2]
,依此类推

我确信我应该创建一个循环,并且每次循环时,使用一个
count=count+1
来创建附加到变量的数字

我的问题是,我不知道如何创建一个名为
'table'+count
table1
)的变量


如何将这两种语言连接在一起?

您不能,很少有编程语言支持这一点,也很少有编程语言通过反射来支持这一点

最简单的方法就是保留你的桌子!您的所有表都存储在那里,您可以通过使用数据[x]轻松地引用特定的表
当您这样做时,您可以仅使用表的索引来引用表。

您不能这样做,很少有编程语言支持这一点,也很少有编程语言通过反射来支持这一点

最简单的方法就是保留你的桌子!您的所有表都存储在那里,您可以通过使用数据[x]轻松地引用特定的表
当您这样做时,您可以仅使用表的索引来引用表。

创建具有构造名称的全局变量的方法是更新全局表
\u G

_G['table'..count] = data[count]
例如:


创建具有构造名称的全局变量的方法是更新全局表
\u G

_G['table'..count] = data[count]
例如:


它有什么用处?它将占用2倍的内存(因此,内存效率低下)。我更想知道您计划如何使用这些变量。您试图解决的需要此功能的问题是什么?这听起来像是一个问题,这很可能是一个XY问题。正如我所说,我还在学习。数据中包含的每个表都包含相同的5个字段,但具有不同的值。我不需要大部分数据..但..现在..我想在每个表的字段3中添加所有值。它有什么用处?它将占用2倍的内存(因此,内存效率低下)。我更想知道您计划如何使用这些变量。您试图解决的需要此功能的问题是什么?这听起来像是一个问题,这很可能是一个XY问题。正如我所说,我还在学习。数据中包含的每个表都包含相同的5个字段,但具有不同的值。我还不需要大部分数据,但目前我想在每个表的字段3中添加所有值。虽然不使用count(并创建一个不必要的变量),为什么不为I=1做
,#data do"G['table'..I]=data[I]end
?在我看来,这更有意义。为了更清楚地说明这一点,也许我应该说count=1的
,#data do _G['table'…count]=data[count]end
——但我只是解决了如何生成全局变量的问题,而不是如何生成循环的问题。虽然我没有使用count(并创建一个不必要的变量),但,为什么不
对于i=1,#data do _G['table'…i]=data[i]end
?在我看来,这更有意义。为了更清楚地说明,也许我应该说count=1的
,#data do _G['table'…count]=data[count]end
——但我只是在讨论如何生成全局变量的问题,而不是如何生成循环。Lua是允许创建具有任意名称的全局变量的语言之一,如上所示,尽管这不是最佳实践。Lua是允许创建具有任意名称的全局变量的语言之一,如上所示,尽管这不是最佳实践。