Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays AS3共享对象幽灵数组纠缠_Arrays_Actionscript 3_Shared Objects - Fatal编程技术网

Arrays AS3共享对象幽灵数组纠缠

Arrays AS3共享对象幽灵数组纠缠,arrays,actionscript-3,shared-objects,Arrays,Actionscript 3,Shared Objects,如您所见,我只更新了arr,但是so.data.arr也得到了更新 so.data.arr如果不是arr[2]=5,则不更新;我写arr=[1,2,5] 似乎arr和so.data.arr以某种方式链接,但前提是我更新了arr中的一个元素,而不是以不同方式设置整个arr 这是我偶然发现的。为什么会这样 我能数一数它每次都是这样工作并使用它吗?谢谢。基本上,数组是通过引用传递的,而不是通过值传递的。这意味着,如果将一个数组变量分配给另一个数组变量,则不会创建新数组 so.data.arr=arr

如您所见,我只更新了arr,但是so.data.arr也得到了更新

so.data.arr如果不是arr[2]=5,则不更新;我写arr=[1,2,5]

似乎arrso.data.arr以某种方式链接,但前提是我更新了arr中的一个元素,而不是以不同方式设置整个arr

这是我偶然发现的。为什么会这样


我能数一数它每次都是这样工作并使用它吗?谢谢。

基本上,数组是通过引用传递的,而不是通过值传递的。这意味着,如果将一个数组变量分配给另一个数组变量,则不会创建新数组

so.data.arr=arr

表示
so.data.arr
arr
都指向同一个数组对象。这就是为什么对其中一个的修改会被另一个反映出来。他们指的是同一件事。但是

arr=[1,2,5]

将使
arr
指向其他数组对象,请记住
[1,2,5]
新数组(1,2,5)
的简写版本

这就是为什么在这一行之后,它们不再“链接”了

var so:SharedObject = SharedObject.getLocal("example");
var arr:Array=[1,2,3];
so.data.arr = arr;
so.flush();
trace(so.data.arr); // outputs 1,2,3
arr[2]=5;
trace(so.data.arr); // outputs 1,2,5