about_Operator_Precedence
Krótki opis
Wyświetla listę operatorów programu PowerShell w kolejności pierwszeństwa.
Długi opis
Operatory programu PowerShell umożliwiają tworzenie prostych, ale zaawansowanych wyrażeń. W tym temacie wymieniono operatory w kolejności pierwszeństwa. Kolejność pierwszeństwa to kolejność, w której program PowerShell oblicza operatory, gdy wiele operatorów pojawia się w tym samym wyrażeniu.
Gdy operatory mają równe pierwszeństwo, program PowerShell ocenia je od lewej do prawej, gdy pojawiają się w wyrażeniu. Wyjątki to operatory przypisania, operatory rzutowania i operatory negacji (!
, -not
, -bnot
), które są oceniane od prawej do lewej.
Można użyć obudów, takich jak nawiasy, aby zastąpić standardową kolejność pierwszeństwa i wymusić w programie PowerShell obliczenie zamkniętej części wyrażenia przed częścią nieujawioną.
Na poniższej liście operatory są wyświetlane w kolejności ich oceny. Operatory w tym samym wierszu lub w tej samej grupie mają równy pierwszeństwo.
Kolumna Operator zawiera listę operatorów. W kolumnie Odwołanie znajduje się temat Pomocy programu PowerShell, w którym opisano operator. Aby wyświetlić temat, wpisz get-help <topic-name>
.
OPERATOR | ODWOŁANIE |
---|---|
$() @() () @{} |
about_Operators |
. ?. (dostęp do członków) |
about_Operators |
:: (statyczne) |
about_Operators |
[0] ?[0] (operator indeksu) |
about_Operators |
[int] (operatory rzutowe) |
about_Operators |
-split (jednoargumentowy) |
about_Split |
-join (jednoargumentowy) |
about_Join |
, (operator przecinka) |
about_Operators |
++ -- |
about_Assignment_Operators |
! -not |
about_Logical_Operators |
.. (operator zakresu) |
about_Operators |
-f (operator formatu) |
about_Operators |
- (jednoargumentowy/ujemny) |
about_Arithmetic_Operators |
* / % |
about_Arithmetic_Operators |
+ - |
about_Arithmetic_Operators |
Następująca grupa operatorów ma równe pierwszeństwo. Ich warianty uwzględniające wielkość liter i jawnie niewrażliwe na wielkość liter mają taki sam pierwszeństwo.
OPERATOR | ODWOŁANIE |
---|---|
-split (binarny) |
about_Split |
-join (binarny) |
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 |
Lista zostanie wznowione tutaj z następującymi operatorami w kolejności pierwszeństwa:
OPERATOR | ODWOŁANIE |
---|---|
-band -bnot -bor -bxor -shr -shl |
about_Arithmetic_Operators |
-and -or -xor |
about_Logical_Operators |
Następujące elementy nie są prawdziwymi operatorami. Są one częścią składni poleceń programu PowerShell, a nie składni wyrażeń. Przypisanie jest zawsze ostatnią akcją, która się dzieje.
SKŁADNIA | ODWOŁANIE |
---|---|
. (dot-source) |
about_Operators |
& (połączenie) |
about_Operators |
? <if-true> : <if-false> (Operator Ternary) |
about_Operators |
?? (operator null-coalese) |
about_Operators |
| (operator potoku) |
about_Operators |
> >> 2> 2>> 2>&1 |
about_Redirection |
&& || (operatory łańcucha potoków) |
about_Operators |
= += -= *= /= %= ??= |
about_Assignment_Operators |
Przykłady
Następujące dwa polecenia pokazują operatory arytmetyczne i efekt używania nawiasów w celu wymuszenia w programie PowerShell oceny ujętej części wyrażenia jako pierwszej.
PS> 2 + 3 * 4
14
PS> (2 + 3) * 4
20
Poniższy przykład pobiera pliki tekstowe tylko do odczytu z katalogu lokalnego i zapisuje je w zmiennej $read_only
.
$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}
Jest to odpowiednik poniższego przykładu.
$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )
Ponieważ operator potoku (|
) ma wyższy priorytet niż operator przypisania (=
), pliki, które Get-ChildItem
pobiera polecenie cmdlet, są wysyłane do Where-Object
polecenia cmdlet do filtrowania przed przypisaniem ich do zmiennej $read_only
.
W poniższym przykładzie pokazano, że operator indeksu ma pierwszeństwo przed operatorem rzutowania.
To wyrażenie tworzy tablicę trzech ciągów. Następnie używa operatora indeksu z wartością 0, aby wybrać pierwszy obiekt w tablicy, który jest pierwszym ciągiem. Na koniec rzutuje wybrany obiekt jako ciąg. W tym przypadku obsada nie ma wpływu.
PS> [string]@('Windows','PowerShell','2.0')[0]
Windows
To wyrażenie używa nawiasów, aby wymusić wykonanie operacji rzutowania przed wyborem indeksu. W rezultacie cała tablica jest rzutowa jako (pojedynczy) ciąg. Następnie operator indeksu wybiera pierwszy element w tablicy ciągów, który jest pierwszym znakiem.
PS> ([string]@('Windows','PowerShell','2.0'))[0]
W
W poniższym przykładzie, ponieważ -gt
operator (greater-than) ma wyższy priorytet niż -and
operator (logiczny AND), wynik wyrażenia to FALSE.
PS> 2 -gt 4 -and 1
False
Jest to równoważne następującemu wyrażeniu.
PS> (2 -gt 4) -and 1
False
Jeśli operator -i miał wyższy priorytet, odpowiedź będzie prawdziwa.
PS> 2 -gt (4 -and 1)
True
Jednak w tym przykładzie przedstawiono ważną zasadę zarządzania pierwszeństwem operatora. Gdy wyrażenie jest trudne do zinterpretowania, użyj nawiasów, aby wymusić kolejność obliczania, nawet jeśli wymusza pierwszeństwo operatora domyślnego. Nawiasy sprawiają, że intencje są jasne dla osób, które czytają i utrzymują skrypty.