Clonación de matrices

La clase Array no tiene ningún método incorporado para hacer copias de matrices. Se puede crear una copia superficial de una matriz llamando a los métodos concat() o slice() sin argumentos. En una copia superficial, si la matriz original tiene elementos que son objetos, sólo se copian las referencias a los objetos, en lugar de los mismos objetos. La copia señala a los mismos objetos que la matriz original. Los cambios realizados en los objetos se reflejan en ambas matrices.

En una copia completa también se copian los objetos de la matriz original, de forma que la nueva matriz no señale a los mismos objetos que la matriz original. La copia completa requiere más de una línea de código, que normalmente ordenan la creación de una función. Dicha función se puede crear como una función de utilidad global o como un método de una subclase Array.

En el ejemplo siguiente se define una función denominada clone() que realiza una copia completa. Se utiliza un algoritmo de una técnica de programación común en Java. La función crea una copia completa serializando la matriz en una instancia de la clase ByteArray y leyendo a continuación la matriz en una nueva matriz. Esta función acepta un objeto de forma que se pueda utilizar tanto con matrices indexadas como con matrices asociativas, como se indica en el código siguiente:

import flash.utils.ByteArray;

function clone(source:Object):*
{
    var myBA:ByteArray = new ByteArray();
    myBA.writeObject(source);
    myBA.position = 0;
    return(myBA.readObject());
}

Flash CS3

 

Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios

Página actual: http://livedocs.adobe.com/flash/9.0_es/main/00000092.html