ค้นหาเว็บไซต์

เกี่ยวกับลำดับความสำคัญของตัวดำเนินการ


คำอธิบายสั้น ๆ

แสดงรายการตัวดำเนินการ 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 -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

รายการจะกลับมาดำเนินการต่อที่นี่โดยใช้ตัวดำเนินการต่อไปนี้ตามลำดับ:

-band -bnot -bor -bxor -shr -shl

about_Arithmetic_Operators

-and -or -xor

about_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

บทความที่เกี่ยวข้อง