Powershell: dichiarare un array di array non è così facile? [duplicare]

Oct 16 2020

Ho provato a descrivere un piccolo "elenco" di cose, usando array di array. Un comportamento strano che ho osservato:

function write-it-out([array] $arrays) { foreach($a in $arrays) { write-host "items" $a[0] $a[1] } } $arrayOfArrays1 = @( 
  @("apple","orange"),
  @("monkey","bear")
)

$arrayOfArrays2 = @( @("android","linux") ) # it works write-it-out $arrayOfArrays1
# it wont
write-it-out $arrayOfArrays2

Il primo caso restituisce le due righe previste con il seguente contenuto:

articoli mela arancione
articoli scimmia orso

Ma la seconda chiamata di funzione non restituisce le aspettative

elementi Android Linux

ma

oggetti e
oggetti li

Qualcuno sa perché? E come descrivere un array contenente solo un array all'interno, non più di uno? Quindi come risolverlo? Grazie ragazzi in anticipo!

Risposte

1 RyanBolger Oct 16 2020 at 16:05

Non sono esattamente sicuro del perché , ma quando dichiari $arrayOfArrays2, PowerShell sta immediatamente srotolando l'array esterno.

> $arrayOfArrays2.Count
2

> $arrayOfArrays2[0]
android

Per evitare che lo faccia, puoi aggiungere una virgola extra all'interno della dichiarazione dell'array esterno in questo modo.

> $arrayOfArrays2 = @(,@("android","linux"))

> $arrayOfArrays2.Count 1 > $arrayOfArrays2[0]
android
linux

> write-it-out $arrayOfArrays2
Items android linux