about_Operator_Precedence

Krátký popis

Zobrazí seznam operátorů PowerShellu v pořadí priority.

Dlouhý popis

Operátory PowerShellu umožňují vytvářet jednoduché, ale výkonné výrazy. Toto téma uvádí operátory v pořadí priority. Pořadí priorit je pořadí, ve kterém PowerShell vyhodnotí operátory, když se ve stejném výrazu zobrazí více operátorů.

Pokud mají operátory stejnou prioritu, PowerShell je vyhodnotí zleva doprava, jak se zobrazují ve výrazu. Výjimkou jsou operátory přiřazení, operátory přetypování a operátory negace (!, -not, -bnot), které se vyhodnocují zprava doleva.

K přepsání standardního pořadí priority můžete použít skříně, jako jsou závorky, a vynutit, aby PowerShell vyhodnotil uzavřenou část výrazu před nezařazenou částí.

V následujícím seznamu jsou operátory uvedeny v pořadí, v jakém se vyhodnocují. Operátory na stejném řádku nebo ve stejné skupině mají stejnou prioritu.

Sloupec Operátor zobrazí seznam operátorů. Sloupec Reference obsahuje téma nápovědy PowerShellu, ve kterém je operátor popsaný. Chcete-li zobrazit téma, zadejte get-help <topic-name>.

OPERÁTOR ODKAZ
$() @() () @{} about_Operators
. ?. (přístup člena) about_Operators
:: (statické) about_Operators
[0] ?[0] (operátor indexu) about_Operators
[int] (operátory přetypování) about_Operators
-split (unární) about_Split
-join (unární) about_Join
, (operátor čárky) about_Operators
++ -- about_Assignment_Operators
! -not about_Logical_Operators
.. (operátor rozsahu) about_Operators
-f (operátor formátu) about_Operators
- (unární/negativní) about_Arithmetic_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators

Následující skupina operátorů má stejnou prioritu. Jejich varianty nerozlišující velká a malá a velká písmena mají stejnou prioritu.

OPERÁTOR ODKAZ
-split (binární) about_Split
-join (binární) 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

Seznam se tady obnoví s následujícími operátory v pořadí priority:

OPERÁTOR ODKAZ
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

Následující položky nejsou pravdivé operátory. Jsou součástí syntaxe příkazů PowerShellu, nikoli syntaxe výrazů. Přiřazení je vždy poslední akcí, která se stane.

SYNTAXE ODKAZ
. (dot-source) about_Operators
& (zavolat) about_Operators
? <if-true> : <if-false> (Ternární operátor) about_Operators
?? (operátor null-coalese) about_Operators
| (operátor kanálu) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
&& || (operátory řetězu kanálů) about_Operators
= += -= *= /= %= ??= about_Assignment_Operators

Příklady

Následující dva příkazy ukazují aritmetické operátory a efekt použití závorek k vynucení PowerShellu k vyhodnocení uzavřené části výrazu jako první.

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

Následující příklad získá textové soubory jen pro čtení z místního adresáře a uloží je do $read_only proměnné.

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

Odpovídá následujícímu příkladu.

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

Vzhledem k tomu, že operátor kanálu (|) má vyšší prioritu než operátor přiřazení (=), odešlou se do rutiny soubory, které Get-ChildItem rutina získá Where-Object , za účelem filtrování před přiřazením $read_only k proměnné.

Následující příklad ukazuje, že operátor indexu má přednost před operátorem přetypování.

Tento výraz vytvoří pole tří řetězců. Potom pomocí operátoru indexu s hodnotou 0 vybere první objekt v poli, což je první řetězec. Nakonec přetypuje vybraný objekt jako řetězec. V tomto případě nemá přetypování žádný vliv.

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

Tento výraz používá závorky k vynucení operace přetypování před výběrem indexu. Výsledkem je, že celé pole se přetypuje jako řetězec (jeden). Potom operátor indexu vybere první položku v řetězcovém poli, což je první znak.

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

V následujícím příkladu, protože -gt operátor (větší než) má vyšší prioritu než -and operátor (logický OPERÁTOR AND), výsledek výrazu je NEPRAVDA.

PS> 2 -gt 4 -and 1
False

Je ekvivalentní následujícímu výrazu.

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

Pokud má operátor vyšší prioritu, odpověď by měla hodnotu TRUE.

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

Tento příklad však ukazuje důležitou zásadu přednosti operátora správy. Pokud je pro lidi obtížné interpretovat výraz, použijte závorky k vynucení pořadí vyhodnocení, i když vynutí výchozí prioritu operátoru. Závorky závorky jasně ujasní lidem, kteří čtou a udržují vaše skripty.

Viz také