-
表成员改变,不影响变量指针。
-
表本身改变,会改变变量指针。
var a = {1,2,3}
var b = a1、b = a 表示两个表用一个地址,指针一样。
2、当改变其中一个表的【成员】的值时,如 a[1] = 5 ,因为改变的是成员值,没有影响表的指针,所以两个表的值都会同步改变。
3、当某一个【表】本身被改变(重新赋值)时,如 a = {4,5,6} (而不是分别给成员赋值 a[1]=4; a[2]=5; a[3]=6;) 则给a表一个新的指针,但不影响b表。
var a = {1,2,3}
var b = a // 此时两个表内容和指针都一样
b = ..table.mix(a) // 因为mix()的返回值就是表a,所以本句相当于b=a,此时两个表内容和指针都一样
b = {1,2,3} // 直接赋值:此时两个表内容一样,指针不一样
b ={..table.unpack(a)} // 拆分再组合:此时两个表内容一样,指针不一样
b = ..table.clone(a) // 克隆:此时两个表内容一样,指针不一样
4、两个表,即使初始值内容一样,指针也不一样。
var a = {1,2,3}
var b = {1,2,3} // 此时两个表内容一样,指针不一样
import console;
var a = {1,2,3}
var b = a
console.dump(a,b,a=b,'\n\n');
a[1] = 4
a[2] = {4,5,6}
a[3] = "789"
console.dump(a,b,a=b,'\n\n');
// a = null
// a = 4
a = {5,6,7}
console.dump(a,b,a=b);
console.pause(true);

本文详细探讨了Lua中表的成员改变与表本身的改变对变量指针的影响。通过实例展示了当表成员变化时,两个引用同一表的变量会同步更新,而表重新赋值时则会产生新的指针。同时,使用了`table.mix`、直接赋值、拆分再组合以及克隆等操作来说明这些变化。最后,通过示例代码展示了各种情况下的指针变化情况。
2651

被折叠的 条评论
为什么被折叠?



