Há duas maneiras de criar matrizes associativas no ActionScript 3.0. A primeira alternativa é usar uma ocorrência de Object. Ao usar essa ocorrência, será possível inicializar a matriz com um literal de objeto. Uma ocorrência da classe Object, também chamada de
objeto genérico
, tem a mesma funcionalidade de uma matriz associativa. Cada nome de propriedade do objeto genérico serve como a chave que fornece acesso a um valor armazenado.
O exemplo a seguir cria uma matriz associativa chamada
monitorInfo
, usando um literal de objeto para inicializar a matriz com dois pares de chave e valor:
var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
Se não for necessário inicializar a matriz no tempo da declaração, use o construtor Object para criar a matriz da seguinte maneira:
var monitorInfo:Object = new Object();
Depois que a matriz é criada com um literal de objeto ou um construtor da classe Object, você pode adicionar novos valores à matriz usando o operador de acesso à matriz (
[]
) ou o operador de ponto (
.
). O exemplo a seguir adiciona dois novos valores 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
Observe que a chave chamada
aspect ratio
contém um caractere de espaço. Isso é possível com o operador de acesso à matriz (
[]
), mas gera um erro se a tentativa for feita com o operador ponto. Não é recomendado usar espaços em nomes de chave.
A segunda maneira de criar uma matriz associativa é usar o construtor Array (ou o construtor de qualquer classe dinâmica) e usar o operador de acesso à matriz (
[]
) ou o operador de ponto (
.
) para adicionar os pares de chave e valor à matriz. Se declarar que a matriz associativa é do tipo Array, você não poderá usar um literal de objeto para inicializar a matriz. O exemplo a seguir cria uma matriz associativa chamada
monitorInfo
usando o construtor Array e adiciona uma chave chamada
type
e uma chave chamada
resolution
, junto com seus 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
Não há nenhuma vantagem em usar o construtor Array para criar uma matriz associativa. Você não pode usar a propriedade
Array.length
ou algum método da classe Array com matrizes associativas, mesmo se o construtor Array ou o tipo de dados Array for usado. O uso do construtor Array é mais adequado para a criação de matrizes indexadas.