2011-01-07 11 views
5

In Actionscript 3, che è preferibile?Quale è preferibile, a = [] o a = nuova matrice()?

a = [1,2,3]; 

o

a = new Array(1,2,3); 

Sembra che chiamando il costruttore matrice con i dati come singoli argomenti sarebbe più lento e che l'altro metodo sarebbe una sorta di copia memoria diretta.

Sai qual è il migliore da usare nella maggior parte dei casi e perché?

risposta

8

Preferisco le parentesi quadre perché è una sintassi più concisa e di facile lettura.

Quest'ultima sintassi sarà un po 'più lenta, poiché è possibile sostituire il costruttore di array predefinito facendo Array = function() { ... }; - almeno nella maggior parte delle varianti di ECMAScript ciò funziona. Pertanto, utilizzando tale modulo sarà necessario prima cercare la funzione globale Array.

+0

interessante. personalmente, sento che il nuovo Array (args) è più facile da leggere. – TheDarkIn1978

+0

Lo trovo inutilmente prolisso e distratto. Questo è uno dei motivi per cui non amo i linguaggi derivati ​​da BASIC. – cdhowie

5

L'utilizzo di un array letterale (var a: Array = []) sarà sempre più rapido di quello del nuovo array() e credo sia considerato una best practice.

7

Preferisco le parentesi quadre per quasi tutti i casi semplicemente per evitare confusione.

Il costruttore matrice ha 2 forme:

  • Array(...)
  • Array(size:int)

La prima forma crea e matrice con i parametri elencati come valori, e la seconda forma crea una matrice con quello numero di elementi. Va tutto bene fino a quando si desidera inizializzare un array con un solo int:

  • new Array() => []
  • new Array("foo") => ["foo"]
  • new Array("foo", "bar") => ["foo", "bar"]
  • new Array(42,43) => [42,43]
  • new Array(42) => [undefined, ...undefined x 40..., undefined]

Tale incoerenza mi ha morso un paio volte prima ho appena smesso di usare la matrice costruttore, fatta eccezione per l'occasione estremamente rara in cui voglio un array con elementi non definiti.

Problemi correlati