No me resulta familiar trabajar con la asignación de matriz de ActionScript por metodología de referencia. Entiendo lo que está haciendo, pero de alguna manera me resulta confuso administrar muchas matrices con esta metodología. ¿Hay una manera simple de trabajar con matrices de ActionScript donde la asignación de matriz es por VALOR en lugar de REFERENCIA? Por ejemplo, si deseo asignar oneArray
a twoArray
sin vincular las dos matrices entre sí para siempre en el futuro, ¿cómo hacerlo? ¿Esto funcionaría?ActionScript: cómo asignar matrices por VALOR en lugar de REFERENCIA?
var oneArray:Array = new Array("a", "b", "c");
var twoArray:Array(3);
for (ii=0; ii<3; ii++) { twoArray[ii] = oneArray[ii]; }
La intención es ser capaz de cambiar twoArray
sin ver un cambio en oneArray
.
¿Algún consejo sobre cómo asignar matrices por VALOR en lugar de REFERENCIA?
---- ---- para la referencia
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html
asignación matriz se hace por referencia en lugar de por valor. Cuando se asigna una variable de matriz a otra variable de matriz, ambos se refieren a la misma matriz:
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.
Acabo de dar cuenta de la respuesta de Taskinoor, para persuadirte hacia mi dirección, jeje, 'concat' es en realidad el doble de rápido que' slice 'en términos de clonación de una matriz. :) – xLite
Gracias! Investigué un poco y encontré algunos enlaces que respaldan tu reclamo. Aquí hay uno: http://agit8.turbulent.ca/bwp/2008/08/flash-as3-optimization-fastest-way-to-copy-an-array/ – ggkmath
esto solo hará una copia superficial. para una copia profunda de una matriz, debe usar ByteArray para clonar matrices en AS3: http: //help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7ee7.html – TheDarkIn1978