Class 为什么我能';你不做单独的表格副本吗?

Class 为什么我能';你不做单独的表格副本吗?,class,inheritance,lua,lua-table,Class,Inheritance,Lua,Lua Table,在文件中,我执行如下代码: Source = {} Source[1] = { a = 1, b = 2, ... } 在另一个文件中,我执行以下操作: Table = {} Table[1] = Source[1] Table[2] = Source[1] 我使用此方法在Lua中创建对象。不过,它们并不是单独作用的,例如,我不能为这两个表提供不同的值 为什么??还有,我能为它做些什么?我希望避免逐个定义表。原因是变量表[1]和表[2]只是对相同表值的引用,它们不包含值 要按值复制表,请逐个

在文件中,我执行如下代码:

Source = {}
Source[1] = { a = 1, b = 2, ... }
在另一个文件中,我执行以下操作:

Table = {}
Table[1] = Source[1]
Table[2] = Source[1]
我使用此方法在Lua中创建对象。不过,它们并不是单独作用的,例如,我不能为这两个表提供不同的


为什么??还有,我能为它做些什么?我希望避免逐个定义表。

原因是变量
表[1]
表[2]
只是对相同表值的引用,它们不包含值

要按值复制表,请逐个复制值:

for k, v in pairs(Source[1]) do
    Table[1][k]  = v
    Table[2][k]  = v
end

有关复制表的更多信息,请参见。

源[2]
是您的代码中的
nil
,您是否试图使
表[2]
的内容与
表[1]
相同?@YuHao当然,谢谢!可能的重复使用<代码>配对和 iPARIS 对我来说总是很难,因为我从来没有在C++中学习过类似的东西。谢谢大家!@ZoltánSchmidt对于(对c:map({{a',1},{b',2}))来说,这几乎是一样的
。在多次尝试实现此代码失败后,我意识到在右侧,一个简单的
v
就足够了。