-
表成員改變,不影響變量指針。
-
表本身改變,會改變變量指針。
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);