Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Catatan editorial
Penting
Windows PowerShell Language Specification 3.0 diterbitkan pada Desember 2012 dan didasarkan pada Windows PowerShell 3.0. Spesifikasi ini tidak mencerminkan status PowerShell saat ini. Tidak ada rencana untuk memperbarui dokumentasi ini untuk mencerminkan status saat ini. Dokumentasi ini disajikan di sini untuk referensi historis.
Dokumen spesifikasi tersedia sebagai dokumen Microsoft Word dari Pusat Unduhan Microsoft di: https://www.microsoft.com/download/details.aspx?id=36389 Dokumen Word telah dikonversi untuk presentasi di sini di Microsoft Learn. Selama konversi, beberapa perubahan editorial telah dilakukan untuk mengakomodasi pemformatan untuk platform Dokumen. Beberapa kesalahan ketik dan kesalahan kecil telah dikoreksi.
9.1 Pengantar
PowerShell mendukung array dengan satu atau lebih dimensi, di mana setiap dimensi dapat memiliki nol atau lebih elemen . Dalam dimensi, elemen diberi nomor dalam urutan bilangan bulat naik mulai dari nol.
Setiap elemen individu dapat diakses melalui operator subskrip array []
(§7.1.4). Jumlah dimensi dalam array disebut pangkatnya .
Elemen dapat berisi nilai jenis apa pun termasuk jenis array. Array yang memiliki satu atau beberapa elemen yang nilainya berupa tipe array apa pun disebut jagged array. Array multidirensi memiliki beberapa dimensi, dalam hal ini, jumlah elemen di setiap baris dimensi sama. Elemen dari array jagged dapat berisi array multidimensi, atau sebaliknya.
Array multidimensional disimpan dalam urutan baris utama. Jumlah elemen dalam sebuah array disebut panjang array tersebut, yang tetap saat array dibuat. Dengan demikian, elemen dalam array 1 dimensi B[0,0], B[0,1], ..., B[0,N-1], B[1,0], B[1,1], ..., B[1,N-1], ..., B[M-1,0], B[M-1,1], ..., B[M-1,N-1]
.
Dan sebagainya untuk array dengan tiga dimensi atau lebih.
Secara default, array polimorfik ; yaitu, elemen-elemennya tidak perlu semua memiliki jenis yang sama. Misalnya
$items = 10,"blue",12.54e3,16.30D # 1-D array of length 4
$items[1] = -2.345
$items[2] = "green"
$a = New-Object 'object[,]' 2,2 # 2-D array of length 4
$a[0,0] = 10
$a[0,1] = $false
$a[1,0] = "red"
$a[1,1] = $null
Array 1 dimensi memiliki jenis
Semua tipe array berasal dari tipe Array (§4.3.2).
9.2 Pembuatan array
Array dibuat melalui ekspresi pembuatan array
Berikut adalah beberapa contoh pembuatan dan penggunaan array:
$values = 10, 20, 30
for ($i = 0; $i -lt $values.Length; ++$i) {
"`$values[$i] = $($values[$i])"
}
$x = , 10 # x refers to an array of length 1
$x = @(10) # x refers to an array of length 1
$x = @() # x refers to an array of length 0
$a = New-Object 'object[,]' 2, 2 # create a 2x2 array of anything
$a[0, 0] = 10 # set to an int value
$a[0, 1] = $false # set to a boolean value
$a[1, 0] = "red" # set to a string value
$a[1, 1] = 10.50D # set to a decimal value
foreach ($e in $a) { # enumerate over the whole array
$e
}
Berikut ini dikirim ke jalur pipa:
$values[0] = 10
$values[1] = 20
$values[2] = 30
10
False
red
10.50
Nilai awal default dari elemen apa pun yang tidak diinisialisasi secara eksplisit adalah nilai default untuk jenis elemen tersebut (yaitu, $false
, nol, atau $null
).
9.3 Penggabungan array
Array jenis dan panjang arbitrer dapat digabungkan melalui operator +
dan +=
, yang keduanya menghasilkan pembuatan array 1 dimensi baru yang tidak dibatasi. Array yang ada tidak berubah. Lihat §7.7.3 untuk informasi lebih lanjut, dan §9.4 untuk diskusi mengenai penambahan ke array dengan tipe terbatas.
9.4 Jenis elemen yang membatasi
Array satu dimensi dapat dibuat dengan membatasi jenisnya dengan cara mengawali ekspresi pembuatan array dengan casting tipe array. Misalnya
$a = [int[]](1,2,3,4) # constrained to int
$a[1] = "abc" # implementation-defined behavior
$a += 1.23 # new array is unconstrained
Sintaks untuk membuat array multidimensional memerlukan spesifikasi tipe, dan tipe tersebut menjadi tipe pembatas untuk array tersebut. Namun, dengan menentukan jenis object[]
tertentu, benar-benar tidak ada batasan sama sekali karena nilai dari jenis apa pun dapat ditetapkan pada elemen array dari jenis itu.
Menggabungkan dua array (§7,7,3) selalu menghasilkan array baru yang tidak dibatasi meskipun kedua array dibatasi oleh jenis yang sama. Misalnya
$a = [int[]](1,2,3) # constrained to int
$b = [int[]](10,20) # constrained to int
$c = $a + $b # constraint not preserved
$c = [int[]]($a + $b) # result explicitly constrained to int
9.5 Array sebagai jenis referensi
Karena jenis array adalah jenis referensi, variabel yang menunjuk array dapat dibuat untuk merujuk ke array apa pun dari jenis peringkat, panjang, dan elemen apa pun. Misalnya
$a = 10,20 # $a refers to an array of length 2
$a = 10,20,30 # $a refers to a different array, of length 3
$a = "red",10.6 # $a refers to a different array, of length 2
$a = New-Object 'int[,]' 2,3 # $a refers to an array of rank 2
Penugasan array melibatkan salinan dangkal; artinya, variabel yang ditetapkan mengacu pada array yang sama, dan tidak ada salinan array yang dibuat. Misalnya
$a = 10,20,30
">$a<"
$b = $a # make $b refer to the same array as $a
">$b<"
$a[0] = 6 # change value of [0] via $a
">$a<"
">$b<" # change is reflected in $b
$b += 40 # make $b refer to a new array
$a[0] = 8 # change value of [0] via $a
">$a<"
">$b<" # change is not reflected in $b
Berikut ini dikirim ke jalur pipa:
>10 20 30<
>10 20 30<
>6 20 30<
>6 20 30<
>8 20 30<
>6 20 30 40<
9.6 Arrays sebagai elemen array
Setiap elemen dari suatu array dapat berupa array itu sendiri. Misalnya
$colors = "red", "blue", "green"
$list = $colors, (,7), (1.2, "yes") # parens in (,7) are redundant; they
# are intended to aid readability
"`$list refers to an array of length $($list.Length)"
">$($list[1][0])<"
">$($list[2][1])<"
Berikut ini dikirim ke jalur pipa:
$list refers to an array of length 3
>7<
>yes<
$list[1]
mengacu pada array 1 elemen, bilangan bulat 7, yang diakses melalui $list[1][0]
, seperti yang ditunjukkan. Bandingkan ini dengan kasus yang berbeda berikut:
$list = $colors, 7, (1.2, "yes") # 7 has no prefix comma
">$($list[1])<"
Di sini, $list[1]
mengacu pada skalar, bilangan bulat 7, yang diakses melalui $list[1]
.
Pertimbangkan contoh berikut,
$x = [string[]]("red","green")
$y = 12.5, $true, "blue"
$a = New-Object 'object[,]' 2,2
$a[0,0] = $x # element is an array of 2 strings
$a[0,1] = 20 # element is an int
$a[1,0] = $y # element is an array of 3 objects
$a[1,1] = [int[]](92,93) # element is an array of 2 ints
9.7 Subskrip negatif
Ini dibahas dalam §7.1.4.1.
9.8 Pemeriksaan Batas
Ini dibahas dalam §7.1.4.1.
9,9 Irisan larik
Potongan array adalah array 1 dimensi yang tidak dibatasi yang elemennya merupakan salinan dari nol atau lebih elemen dari suatu koleksi. Iringan array dibuat melalui operator subskrip []
(§7.1.4.5).
9.10 Menyalin array
Sekumpulan elemen yang berdekatan dapat disalin dari satu array ke array lainnya menggunakan metode [array]::Copy
. Misalnya
$a = [int[]](10,20,30)
$b = [int[]](0,1,2,3,4,5)
[array]::Copy($a, $b, 2) # $a[0]->$b[0],
$a[1]->$b[1]
[array]::Copy($a, 1, $b, 3, 2) # $a[1]->$b[3],
$a[2]->$b[4]
9.11 Mendata elemen dalam array
Meskipun dimungkinkan untuk mengiterasi melalui array dengan mengakses setiap elemennya melalui operator subskrip, kita dapat mendaftar elemen array tersebut menggunakan pernyataan foreach. Untuk array multidimensional, elemen diproses dalam urutan perbaris. Misalnya
$a = 10, 53, 16, -43
foreach ($elem in $a) {
# do something with element via $elem
}
foreach ($elem in -5..5) {
# do something with element via $elem
}
$a = New-Object 'int[,]' 3, 2
foreach ($elem in $a) {
# do something with element via $elem
}
9.12 Perratakan array multidmensional
Beberapa operasi pada array multidmensional (seperti replikasi (§7,6,3) dan perangkaian (§7,7,3)) mengharuskan array tersebut diratakan; yaitu, untuk diubah menjadi array 1 dimensi dari jenis yang tidak dibatasi. Array yang dihasilkan mengumpulkan semua elemen dalam urutan garis besar baris.
Pertimbangkan contoh berikut:
$a = "red",$true
$b = (New-Object 'int[,]' 2,2)
$b[0,0] = 10
$b[0,1] = 20
$b[1,0] = 30
$b[1,1] = 40
$c = $a + $b
Array yang ditunjuk oleh $c
berisi elemen "merah", $true
, 10, 20, 30, dan 40.