Esistono due modi per creare degli array associativi in ActionScript 3.0. Il primo modo consiste nell'utilizzare un'istanza Object. Utilizzando un'istanza Object, è possibile inizializzare l'array con un valore letterale. Un'istanza della classe Object, detta anche
oggetto generico
, è identica dal punto di vista funzionale a un array associativo. Ogni nome di proprietà dell'oggetto generico funge da chiave che fornisce accesso a un valore memorizzato.
Nell'esempio seguente viene creato un array associativo denominato
monitorInfo
e viene utilizzato un valore letterale oggetto per inizializzare l'array con due coppie chiave/valore:
var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
Se non avete l'esigenza di inizializzare l'array quando viene dichiarato, potete utilizzare la funzione di costruzione Object per creare l'array, come indicato di seguito:
var monitorInfo:Object = new Object();
Al termine della creazione dell'oggetto tramite il valore letterale oggetto o la funzione di costruzione della classe Object, è possibile aggiungere nuovi valori all'array mediante l'operatore parentesi (
[]
) o l'operatore punto (
.
). Nell'esempio seguente vengono aggiunti due nuovi valori 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
Notate come la chiave denominata
aspect ratio
contenga un carattere spazio. Questa operazione è possibile con l'operatore di accesso all'array (
[]
), ma genera un errore se si tenta di effettuarla con l'operatore punto. L'uso di spazi nei nomi delle chiavi è sconsigliato.
In alternativa, per creare un array associativo potete utilizzare la funzione di costruzione Array (o la funzione di costruzione di qualsiasi classe dinamica) e utilizzare, quindi, l'operatore di accesso all'array (
[]
) o l'operatore punto (
.
) per aggiungere coppie chiave/valore all'array. Se dichiarate un array associativo di tipo Array, non potete utilizzare un valore letterale oggetto per inizializzare l'array. Nell'esempio seguente viene creato un array associativo denominato
monitorInfo
utilizzando la funzione di costruzione Array e viene aggiunta una chiave denominata
type
e una denominata
resolution
con i relativi valori.
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
L'uso della funzione di costruzione Array per creare un array associativo non presenta vantaggi. Non potete usare la proprietà
Array.length
né alcuno dei metodi della classe Array con gli array associativi, anche se utilizzate la funzione di costruzione di Array o il tipo di dati di Array. È preferibile destinare la funzione di costruzione della classe Array alla creazione di array indicizzati.