-
表成员改变,不影响变量指针。
-
表本身改变,会改变变量指针。
var a = {1,2,3}
var b = a
1、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);