Lua表的行为

Table1 = {"x"}
Table2 = Table1

运行下面的代码会改变Table1的值

Table2[1] = "y"
Table1[1]现在是"y"而不是"x"

这是为什么?为什么其他数据类型如包含字符串或整数的变量不会发生这种情况?这有什么好处吗?

点赞
用户6834680
用户6834680

简单解释:

变量不包含对象。

变量包含对对象的引用。

对于数字:

Number1 = 42
-- 变量引用一个对象(一个数字42)
Number2 = Number1
-- 两个变量都引用同一个对象(一个数字42)
Number2 = Number2 + 1
-- 你创建了一个新的对象(一个数字43),并让变量Number2引用这个新对象。

对于表:

Table1 = {"x"}
-- 变量引用一个对象(包含字符串"x"的数组)
Table2 = Table1
-- 两个变量都引用同一个对象(包含字符串"x"的数组)
Table2[1] = "y"
-- 你修改了现有的对象。你没有创建新的对象。
2018-05-16 09:08:00