Existen dos formas de crear conjuntos asociativos en ActionScript 3.0. La primera es utilizar una instancia de Object. Al utilizar una instancia de Object, es posible inicializar el conjunto con un literal de objeto. Una instancia de la clase Object, conocida también como
objeto genérico
, es funcionalmente idéntica a un conjunto asociativo. El nombre de cada propiedad del objeto genérico actúa a modo de clave que permite acceder a un valor almacenado.
Este código crea un conjunto asociativo denominado
monitorInfo
y utiliza un literal de objeto para inicializar el conjunto con dos pares clave/valor.
var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
Si no es necesario inicializar el conjunto en el momento de declararlo, se puede utilizar el constructor Object para crear el conjunto de la manera siguiente:
var monitorInfo:Object = new Object();
Una vez creado un conjunto con un literal de objeto o el constructor de la clase Object, se pueden añadir valores nuevos al conjunto mediante el operador de acceso a conjunto (
[]
) o el operador punto (
.
). En el ejemplo siguiente se añaden dos valores nuevos a
monitorArray
:
monitorInfo["aspect ratio"] = "16:10"; // bad form, do not use spaces
monitorInfo.colors = "16.7 million";
trace(monitorInfo["aspect ratio"], monitorInfo.colors);
// output: 16:10 16.7 million
Hay que tener en cuenta que la clave denominada
aspect ratio
contiene un espacio en blanco. Esto es posible con el operador de acceso a conjunto (
[]
) pero genera un error si se intenta con el operador punto. No es recomendable utilizar espacios en los nombres de claves.
La segunda forma de crear un conjunto asociativo consiste en utilizar el constructor Array (o el constructor de cualquier clase dinámica) y posteriormente utilizar el operador de acceso a conjunto (
[]
) o el operador punto (
.
) para agregar pares de clave y valor al conjunto. Si se declara el conjunto asociativo con el tipo Array, no se podrá utilizar un literal de objeto para inicializar el conjunto. En el ejemplo siguiente se crea un conjunto asociativo denominado
monitorInfo
empleando el constructor de Array y se añaden claves denominadas
type
y
resolution
, junto con sus valores:
var monitorInfo:Array = new Array();
monitorInfo["type"] = "Flat Panel";
monitorInfo["resolution"] = "1600 x 1200";
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
La utilización del constructor de Array para crear un conjunto asociativo no aporta ninguna ventaja. No se puede utilizar la propiedad
Array.length
ni ninguno de los métodos de la clase Array con los conjuntos asociativos, incluso si se utiliza el constructor de Array o el tipo de datos Array. Es mejor dejar el uso del constructor de Array para la creación de conjuntos indexados.