在Lua表中转换值,而不是链接

时间:2015-09-17 15:02:27

标签: lua lua-table

我简化了我的代码,因此您可以更好地理解:

x = {}
x["foo"]=1
a = {}
a[1]=x
x["foo"]=2
a[2]=x
print(a[1]["foo"])
print(a[2]["foo"])

结果是:

2
2

或者我在期待:

1
2

我明白[1]指的是表x [“foo”]的地址。然后,当我更改此表的值时,变量a [1]指向新值。

我如何告诉Lua我想分配VALUE而不是链接和地址?

另外一件事:如果x是一个“简单”变量而不是一个数组,则传递该值:

y = {}
x = 1
a = {}
a[1] = x
x = 2
a[2] = x
print(a[1])
print(a[2])

返回     1     2

1 个答案:

答案 0 :(得分:2)

Lua manual, last but one paragraph of §2.1,说:

  

表,函数,线程和(完整)userdata值是对象:变量实际上不包含这些值,只是对它们的引用。赋值,参数传递和函数返回总是操纵对这些值的引用;这些操作并不意味着任何形式的复制。