Powershell - declarar array de arrays não é tão fácil? [duplicado]
Tentei descrever uma pequena 'lista' de coisas, usando arrays de arrays. Um comportamento estranho que observei:
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
O primeiro caso produz as duas linhas esperadas com o seguinte conteúdo:
itens maçã laranja
itens macaco urso
Mas a segunda chamada de função não produz os resultados esperados
itens android linux
mas
itens e
itens li
Alguém sabe por quê? E como descrever um array contendo apenas um array dentro, não mais de um? Então, como consertar? Agradeça antecipadamente!
Respostas
Não sei exatamente por que , mas quando você declara $arrayOfArrays2, o PowerShell está imediatamente desenrolando a matriz externa.
> $arrayOfArrays2.Count
2
> $arrayOfArrays2[0]
android
A fim de torná-lo não fizer isso, você pode adicionar uma vírgula a mais dentro da declaração de matriz externa como esta.
> $arrayOfArrays2 = @(,@("android","linux"))
> $arrayOfArrays2.Count 1 > $arrayOfArrays2[0]
android
linux
> write-it-out $arrayOfArrays2
Items android linux