Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 .slice()成为“一个”意味着什么;浅克隆;?_Arrays_Actionscript_Vector_Slice_Shallow Copy - Fatal编程技术网

Arrays .slice()成为“一个”意味着什么;浅克隆;?

Arrays .slice()成为“一个”意味着什么;浅克隆;?,arrays,actionscript,vector,slice,shallow-copy,Arrays,Actionscript,Vector,Slice,Shallow Copy,ActionScript的数组和向量类都有一个slice()方法。如果未传递任何参数,则新数组或向量是原始向量的副本(浅克隆) “浅克隆”意味着什么?具体来说,两者的区别是什么 Array newArray = oldArray.slice(); Vector.<Foo> newVector = oldVector.slice(); Array newArray=oldArray.slice(); 矢量。newVector=oldVector.slice(); 及 Array n

ActionScript的数组和向量类都有一个slice()方法。如果未传递任何参数,则新数组或向量是原始向量的副本(浅克隆)

“浅克隆”意味着什么?具体来说,两者的区别是什么

Array newArray = oldArray.slice();
Vector.<Foo> newVector = oldVector.slice();
Array newArray=oldArray.slice();
矢量。newVector=oldVector.slice();

Array newArray=oldArray;
矢量。新向量=旧向量;
??另外,如果向量的基类型不是Foo,而是像int这样简单且不可变的东西呢

更新:

下面的结果是什么

var one:Vector.<String> = new Vector.<String>()

one.push("something");
one.push("something else");

var two:Vector.<String> = one.slice();

one.push("and another thing");

two.push("and the last thing");

trace(one); // something, something else, and another thing
trace(two); // something, something else, and the last thing
var-one:Vector.=新向量。()
一、推(“某物”);
一、推(“其他东西”);
变量二:向量一、切片();
一、推(“和另一件事”);
推(“最后一件事”);
跟踪(一);//有些事,有些事,还有另一件事
痕迹(二);//有些事,有些事,还有最后一件事

谢谢!♥

在您的上下文中,
.slice()
所做的只是复制一个向量,以便
newArray
引用一个不同于
oldArray
的对象,但这两个对象看起来是相同的对象。同样适用于
newVector
oldVector

第二段:

Array newArray = oldArray;
Vector.<Foo> newVector = oldVector;

two=one.slice()
在没有任何参数的情况下,创建一个包含所有当前内容的
one
的新副本,并将其分配给
two
。当您将第三项推到
1
2
时,您将附加到不同的
Vector
对象。

在您的上下文中,
.slice()
所做的只是复制一个向量,以便
newArray
引用与
oldArray
不同的对象,除了两个看起来是一样的东西。同样适用于
newVector
oldVector

第二段:

Array newArray = oldArray;
Vector.<Foo> newVector = oldVector;

two=one.slice()
在没有任何参数的情况下,创建一个包含所有当前内容的
one
的新副本,并将其分配给
two
。当您将第三个项目推到
1
2
时,您将附加到不同的
向量
对象。

您的意思是
旧数组
新数组
的内容是相同的对象,但是引用是不同的?@Svetlana:当您使用
.slice()
时,由
oldArray
newArray
表示的对象是不同的,但是如果它们是非基元类型,则其属性的引用可能会有所不同。如果简单地将一个指定给另一个,则两个都是对同一对象的不同引用。您的意思是
oldArray
newArray
的内容是相同的对象,但引用是不同的?@Svetlana:
oldArray
newArray
表示的对象在
.slice()
时是不同的,但是,如果它们是非基本类型,则其属性的引用可能会有所不同。如果只是将一个对象指定给另一个对象,则两个对象都是对同一对象的不同引用。 something, something else, and another thing something, something else, and the last thing