about_Operator_Precedence

Deskripsi singkat

Mencantumkan operator PowerShell dalam urutan prioritas.

Deskripsi panjang

Operator PowerShell memungkinkan Anda membangun ekspresi yang sederhana, tetapi kuat. Topik ini mencantumkan operator dalam urutan prioritas. Urutan prioritas adalah urutan di mana PowerShell mengevaluasi operator saat beberapa operator muncul dalam ekspresi yang sama.

Ketika operator memiliki prioritas yang sama, PowerShell mengevaluasinya dari kiri ke kanan saat muncul dalam ekspresi. Pengecualiannya adalah operator penugasan, operator cast, dan operator negasi (!, -not, -bnot), yang dievaluasi dari kanan ke kiri.

Anda dapat menggunakan penutup, seperti tanda kurung, untuk mengambil alih urutan prioritas standar dan memaksa PowerShell untuk mengevaluasi bagian ekspresi yang diapit sebelum bagian yang tidak dirahasiakan.

Dalam daftar berikut, operator tercantum dalam urutan dievaluasi. Operator pada baris yang sama, atau dalam grup yang sama, memiliki prioritas yang sama.

Kolom Operator mencantumkan operator. Kolom Referensi mencantumkan topik Bantuan PowerShell tempat operator dijelaskan. Untuk menampilkan topik, ketik get-help <topic-name>.

OPERATOR REFERENSI
$() @() () @{} about_Operators
. ?. (akses anggota) about_Operators
:: (statis) about_Operators
[0] ?[0] (operator indeks) about_Operators
[int] (operator cast) about_Operators
-split (unary) about_Split
-join (unary) about_Join
, (operator koma) about_Operators
++ -- about_Assignment_Operators
! -not about_Logical_Operators
.. (operator rentang) about_Operators
-f (operator format) about_Operators
- (unary/negative) about_Arithmetic_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators

Grup operator berikut memiliki prioritas yang sama. Varian peka huruf besar/kecil dan tidak peka huruf besar/kecil secara eksplisit memiliki prioritas yang sama.

OPERATOR REFERENSI
-split (biner) about_Split
-join (biner) about_Join
-is -isnot -as about_Type_Operators
-eq -ne -gt -ge -lt -le about_Comparison_Operators
-like -notlike about_Comparison_Operators
-match -notmatch about_Comparison_Operators
-in -notIn about_Comparison_Operators
-contains -notContains about_Comparison_Operators
-replace about_Comparison_Operators

Daftar dilanjutkan di sini dengan operator berikut dalam urutan prioritas:

OPERATOR REFERENSI
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

Item berikut ini bukan operator benar. Mereka adalah bagian dari sintaks perintah PowerShell, bukan sintaks ekspresi. Penugasan selalu merupakan tindakan terakhir yang terjadi.

SINTAKS REFERENSI
. (sumber titik) about_Operators
& (Panggilan) about_Operators
? <if-true> : <if-false> (Operator ternary) about_Operators
?? (operator null-coalese) about_Operators
| (operator alur) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
&& || (operator rantai alur) about_Operators
= += -= *= /= %= ??= about_Assignment_Operators

Contoh

Dua perintah berikut menunjukkan operator aritmatika dan efek penggunaan tanda kurung untuk memaksa PowerShell mengevaluasi bagian ekspresi yang diapit terlebih dahulu.

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

Contoh berikut mendapatkan file teks baca-saja dari direktori lokal dan menyimpannya dalam $read_only variabel.

$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}

Ini setara dengan contoh berikut.

$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )

Karena operator alur (|) memiliki prioritas yang lebih tinggi daripada operator penugasan (=), file yang Get-ChildItem didapat cmdlet dikirim ke Where-Object cmdlet untuk pemfilteran sebelum ditetapkan ke $read_only variabel.

Contoh berikut menunjukkan bahwa operator indeks lebih diutamakan daripada operator cast.

Ekspresi ini membuat array dari tiga string. Kemudian, ia menggunakan operator indeks dengan nilai 0 untuk memilih objek pertama dalam array, yang merupakan string pertama. Terakhir, ini melemparkan objek yang dipilih sebagai string. Dalam hal ini, pemeran tidak berpengaruh.

PS> [string]@('Windows','PowerShell','2.0')[0]
Windows

Ekspresi ini menggunakan tanda kurung untuk memaksa operasi transmisi terjadi sebelum pemilihan indeks. Akibatnya, seluruh array dilemparkan sebagai string (tunggal). Kemudian, operator indeks memilih item pertama dalam array string, yang merupakan karakter pertama.

PS> ([string]@('Windows','PowerShell','2.0'))[0]
W

Dalam contoh berikut, karena -gt operator (lebih besar dari) memiliki prioritas yang lebih tinggi daripada -and operator (LOGICAL AND), hasil ekspresinya adalah FALSE.

PS> 2 -gt 4 -and 1
False

Ini setara dengan ekspresi berikut.

PS> (2 -gt 4) -and 1
False

Jika operator -dan memiliki prioritas yang lebih tinggi, jawabannya adalah TRUE.

PS> 2 -gt (4 -and 1)
True

Namun, contoh ini menunjukkan prinsip penting dalam mengelola prioritas operator. Ketika ekspresi sulit ditafsirkan orang, gunakan tanda kurung untuk memaksa urutan evaluasi, bahkan ketika memaksa operator default diutamakan. Tanda kurung membuat niat Anda jelas bagi orang-orang yang membaca dan memelihara skrip Anda.

Lihat juga