【问题标题】:Casting a value in Lua table, not a link在 Lua 表中转换值,而不是链接
【发布时间】:2015-12-14 12:31:23
【问题描述】:

我已经简化了我的代码,以便您更好地理解:

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

我知道 a[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

【问题讨论】:

标签: lua lua-table


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2013-11-24
    • 1970-01-01
    • 2016-12-17
    • 2018-08-10
    • 1970-01-01
    • 2015-07-09
    相关资源
    最近更新 更多