เกี่ยวกับลำดับความสำคัญของตัวดำเนินการ
คำอธิบายสั้น ๆ
แสดงรายการตัวดำเนินการ PowerShell ในลำดับความสำคัญ
คำอธิบายยาว
ตัวดำเนินการ PowerShell ช่วยให้คุณสร้างนิพจน์ที่เรียบง่ายแต่ทรงพลังได้ หัวข้อนี้แสดงรายการตัวดำเนินการตามลำดับความสำคัญ ลำดับความสำคัญคือลำดับที่ PowerShell ประเมินตัวดำเนินการเมื่อมีตัวดำเนินการหลายตัวปรากฏในนิพจน์เดียวกัน
เมื่อตัวดำเนินการมีความสำคัญเท่ากัน PowerShell จะประเมินจากซ้ายไปขวาตามที่ปรากฏภายในนิพจน์ ข้อยกเว้นคือตัวดำเนินการที่ได้รับมอบหมาย ตัวดำเนินการร่าย และตัวดำเนินการปฏิเสธ (!, -not, -bnot) ซึ่งได้รับการประเมินจาก จากขวาไปซ้าย
คุณสามารถใช้กรอบครอบ เช่น วงเล็บ เพื่อแทนที่ลำดับความสำคัญมาตรฐาน และบังคับให้ PowerShell ประเมินส่วนที่ปิดล้อมของนิพจน์ก่อนส่วนที่ปิดล้อม
ในรายการต่อไปนี้ ตัวดำเนินการจะแสดงตามลำดับที่ได้รับการประเมิน ตัวดำเนินการบนสายเดียวกันหรือในกลุ่มเดียวกันจะมีลำดับความสำคัญเท่ากัน
คอลัมน์ตัวดำเนินการแสดงรายการตัวดำเนินการ คอลัมน์การอ้างอิงแสดงรายการหัวข้อวิธีใช้ PowerShell ซึ่งมีการอธิบายตัวดำเนินการ หากต้องการแสดงหัวข้อ ให้พิมพ์ get-help
$() @() () @{}about_Operators
. ?.(member access)about_Operators
::(static)about_Operators
[0] ?[0](index operator)about_Operators
[int](cast operators)about_Operators
-split(unary)เกี่ยวกับ_แยก
-join(unary)เกี่ยวกับ_เข้าร่วม
,(comma operator)about_Operators
++ --about_Assignment_Operators
! -not-
about_Logical_Operators
..(range operator)about_Operators
-f(format operator)about_Operators
-(unary/negative)about_Arithmetic_Operators
* / %about_Arithmetic_Operators
+ -about_Arithmetic_Operators
กลุ่มตัวดำเนินการต่อไปนี้มีลำดับความสำคัญเท่ากัน รูปแบบที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่จะมีความสำคัญเหมือนกัน
-split(binary)เกี่ยวกับ_แยก
-join(binary)เกี่ยวกับ_เข้าร่วม
-is -isnot -asabout_Type_Operators
-eq -ne -gt -ge -lt -le-
about_Comparison_Operators
-like -notlikeabout_Comparison_Operators
-match -notmatchabout_Comparison_Operators
-in -notInabout_Comparison_Operators
-contains -notContainsabout_Comparison_Operators
-replaceabout_Comparison_Operators
รายการจะกลับมาดำเนินการต่อที่นี่โดยใช้ตัวดำเนินการต่อไปนี้ตามลำดับ:
-band -bnot -bor -bxor -shr -shlabout_Arithmetic_Operators
-and -or -xorabout_Logical_Operators
รายการต่อไปนี้ไม่ใช่ตัวดำเนินการที่แท้จริง เป็นส่วนหนึ่งของไวยากรณ์คำสั่งของ PowerShell ไม่ใช่ไวยากรณ์นิพจน์ การมอบหมายงานคือการกระทำสุดท้ายที่เกิดขึ้นเสมอ
.(dot-source)about_Operators
&(call)about_Operators
? <if-true> : <if-false>(Ternary operator)about_Operators
??(null-coalese operator)about_Operators
|(pipeline operator)about_Operators
> >> 2> 2>> 2>&1เกี่ยวกับ_การเปลี่ยนเส้นทาง
&& ||(pipeline chain operators)about_Operators
= += -= *= /= %= ??=about_Assignment_Operators
ตัวอย่าง
คำสั่งสองคำสั่งต่อไปนี้แสดงตัวดำเนินการทางคณิตศาสตร์และผลของการใช้วงเล็บเพื่อบังคับให้ PowerShell ประเมินส่วนที่ปิดล้อมของนิพจน์ก่อน
PS> 2 + 3 * 4
14
PS> (2 + 3) * 4
20
ตัวอย่างต่อไปนี้รับไฟล์ข้อความแบบอ่านอย่างเดียวจากไดเร็กทอรีในเครื่องและบันทึกไว้ในตัวแปร $read_only
$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}
มันเทียบเท่ากับตัวอย่างต่อไปนี้
$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )
เนื่องจากตัวดำเนินการไปป์ไลน์ (|) มีลำดับความสำคัญสูงกว่าตัวดำเนินการกำหนด (=) ไฟล์ที่ cmdlet Get-ChildItem ได้รับคือ ส่งไปที่ Where-Object cmdlet เพื่อการกรองก่อนที่จะถูกกำหนดให้กับตัวแปร $read_only
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าตัวดำเนินการดัชนีมีความสำคัญมากกว่าตัวดำเนินการหล่อ
นิพจน์นี้จะสร้างอาร์เรย์สามสตริง จากนั้นจะใช้ตัวดำเนินการดัชนีที่มีค่า 0 เพื่อเลือกวัตถุแรกในอาร์เรย์ซึ่งเป็นสตริงแรก สุดท้ายจะแปลงวัตถุที่เลือกเป็นสตริง ในกรณีนี้ การร่ายไม่มีผลใดๆ
PS> [string]@('Windows','PowerShell','2.0')[0]
Windows
นิพจน์นี้ใช้วงเล็บเพื่อบังคับให้การดำเนินการส่งเกิดขึ้นก่อนการเลือกดัชนี เป็นผลให้อาร์เรย์ทั้งหมดถูกแปลงเป็นสตริง (เดี่ยว) จากนั้น ตัวดำเนินการดัชนีจะเลือกรายการแรกในอาร์เรย์สตริงซึ่งเป็นอักขระตัวแรก
PS> ([string]@('Windows','PowerShell','2.0'))[0]
W
ในตัวอย่างต่อไปนี้ เนื่องจากตัวดำเนินการ -gt (greater-than) มีลำดับความสำคัญสูงกว่าตัวดำเนินการ -and (ตรรกะ AND) ผลลัพธ์ของนิพจน์จึงเป็น FALSE .
PS> 2 -gt 4 -and 1
False
มันเทียบเท่ากับนิพจน์ต่อไปนี้
PS> (2 -gt 4) -and 1
False
หากตัวดำเนินการ -and มีลำดับความสำคัญสูงกว่า คำตอบจะเป็น TRUE
PS> 2 -gt (4 -and 1)
True
อย่างไรก็ตาม ตัวอย่างนี้แสดงให้เห็นถึงหลักการสำคัญในการจัดการลำดับความสำคัญของตัวดำเนินการ เมื่อนิพจน์เป็นเรื่องยากสำหรับคนที่จะตีความ ให้ใช้วงเล็บเพื่อบังคับลำดับการประเมิน แม้ว่าจะบังคับลำดับความสำคัญของตัวดำเนินการเริ่มต้นก็ตาม วงเล็บทำให้ความตั้งใจของคุณชัดเจนต่อผู้ที่อ่านและดูแลสคริปต์ของคุณ
ดูเพิ่มเติม
- about_Operators
- about_Arithmetic_Operators
- about_Assignment_Operators
- about_Comparison_Operators
- about_Type_Operators
- เกี่ยวกับ_เข้าร่วม
- เกี่ยวกับ_การเปลี่ยนเส้นทาง
- about_ขอบเขต
- เกี่ยวกับ_แยก
- about_Type_Operators