Powershell - mendeklarasikan array array tidak begitu mudah? [duplikat]

Oct 16 2020

Saya mencoba mendeskripsikan 'daftar' kecil hal-hal, menggunakan array array. Perilaku aneh yang saya amati:

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

Kasus pertama mengeluarkan dua baris yang diharapkan dengan konten berikut:

item item apel jeruk
monyet beruang

Tapi panggilan fungsi kedua tidak menghasilkan yang diharapkan

item android linux

tapi

item dan
item li

Apakah ada yang tahu kenapa? Dan bagaimana menggambarkan sebuah array yang hanya berisi satu array di dalamnya, tidak lebih dari satu? Lalu bagaimana cara memperbaikinya? Terima kasih teman-teman sebelumnya!

Jawaban

1 RyanBolger Oct 16 2020 at 16:05

Saya tidak yakin mengapa , tetapi ketika Anda mendeklarasikan $arrayOfArrays2, PowerShell segera membuka gulungan larik luar.

> $arrayOfArrays2.Count
2

> $arrayOfArrays2[0]
android

Agar tidak melakukan itu, Anda bisa menambahkan koma ekstra di dalam deklarasi array luar seperti ini.

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

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

> write-it-out $arrayOfArrays2
Items android linux