我简化了我的代码,因此您可以更好地理解:
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
答案 0 :(得分:2)
Lua manual, last but one paragraph of §2.1,说:
表,函数,线程和(完整)userdata值是对象:变量实际上不包含这些值,只是对它们的引用。赋值,参数传递和函数返回总是操纵对这些值的引用;这些操作并不意味着任何形式的复制。