天天看點

Aardio - 關于表的指針同步

  • 表成員改變,不影響變量指針。

  • 表本身改變,會改變變量指針。

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);
           
Aardio - 關于表的指針同步

繼續閱讀