array2 = array1
やってみました。
関数に渡したときと同じことが起きてるように見えます。
つまり、array2 = array1
でarray2はarray1の参照になり、array2を変更しようとした時点でコピーされ別の配列になる。
array1 = ["dog", "cat", "fox"];
array2 = array1;
show_debug_message("(1) array1 = "+string(array1));
show_debug_message("(1) array2 = "+string(array2));
array2[1] = "123"; // ★1
show_debug_message("(2) array1 = "+string(array1));
show_debug_message("(2) array2 = "+string(array2));
結果
(1) array1 = [ "dog","cat","flower" ]
(1) array2 = [ "dog","cat","flower" ]
(2) array1 = [ "dog","cat","flower" ]
(2) array2 = [ "dog","123","flower" ]
array2だけが変更されている。ということはコピーされていてarray1とarray2は別の配列になっていると見ることができる。
★1の部分を array2[@ 1] = "123"; にすると、
結果
(1) array1 = [ "dog","cat","flower" ]
(1) array2 = [ "dog","cat","flower" ]
(2) array1 = [ "dog","123","flower" ]
(2) array2 = [ "dog","123","flower" ]
array1とarray2が両方変わっている
array2はarray1の参照のままであり、array2[@ 1]でarray1[1]を直接変更したと考えられる。
★1の部分を array1[1] = "123"; にすると、
結果
(1) array1 = [ "dog","cat","flower" ]
(1) array2 = [ "dog","cat","flower" ]
(2) array1 = [ "dog","123","flower" ]
(2) array2 = [ "dog","123","flower" ]
array1とarray2が両方変更されている
array2はarray1の参照であるからarray1の内容を示していると考えられる。