当前位置:  开发笔记 > 编程语言 > 正文

ActionScript:如何通过VALUE而不是REFERENCE分配数组?

如何解决《ActionScript:如何通过VALUE而不是REFERENCE分配数组?》经验,为你挑选了2个好方法。

我发现通过参考方法使用ActionScript的数组赋值并不熟悉.我理解它在做什么,但我发现用这种方法管理很多数组会让人感到困惑.是否有一种简单的方法来处理ActionScript数组,其中数组赋值是通过VALUE而不是REFERENCE?例如,如果我想在将来永远分配oneArraytwoArray两个数组而不是将它们连接起来,那该怎么做呢?这会有用吗?

var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array(3);
for (ii=0; ii<3; ii++) { twoArray[ii] = oneArray[ii]; }

目的是能够在twoArray不看到变化的情况下进行更改oneArray.

有关如何通过VALUE而不是REFERENCE分配数组的任何建议吗?

- - 以供参考 - -

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html

数组赋值是通过引用而不是值.将一个数组变量分配给另一个数组变量时,两者都引用相同的数组:

var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array = oneArray; // Both array variables refer to the same array.
twoArray[0] = "z";             
trace(oneArray);               // Output: z,b,c.

taskinoor.. 11

看起来你正在寻找切片方法.它返回一个新数组,该数组由原始数组中的一系列元素组成.

var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array = oneArray.slice();
twoArray[0] = "z";             
trace(oneArray);  

编辑:请注意,切片执行浅拷贝,而不是深拷贝.如果您正在寻找深层副本,请按照评论中指定的链接进行操作.



1> taskinoor..:

看起来你正在寻找切片方法.它返回一个新数组,该数组由原始数组中的一系列元素组成.

var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array = oneArray.slice();
twoArray[0] = "z";             
trace(oneArray);  

编辑:请注意,切片执行浅拷贝,而不是深拷贝.如果您正在寻找深层副本,请按照评论中指定的链接进行操作.


以下是有关深度克隆的一些信息http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7ee7.html

2> xLite..:

您可以克隆数组以保证每个Array元素中具有相同值的两个单独副本:

var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array = oneArray.concat();
twoArray[0] = "z";
trace(oneArray); // Output: a,b,c

希望这是你正在寻找的.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有