PowerShell - Хотите понять, почему $ myarr [(- 1) .. 0] дает 10 1, а $ myarr [$ myarr [-1] .. 0] дает ожидаемые 10 9 8 ... 0 - PullRequest
3 голосов
/ 05 февраля 2012

Я хочу лучше понять, что здесь происходит, с оператором диапазона PowerShell.

$ myArray = 1..10 так что у нас есть $ myArray с 1 2 3 4 ... 10

Теперь я хочу использовать -1, чтобы получить последнее значение в массиве и показать 1 - 10 в обратном порядке, поэтому я делаю

$ myArray [(- 1) .. 0], но это дает только 10 1 (только эти два значения, ничего между ними). ​​

Но если я сделаю $ myArray [$ myArray [-1] .. 0], это даст все ожидаемые значения 10 9 8 ... 1

Кто-нибудь может дать объяснение этому? Я думаю, что (-1), находящееся внутри [], будет оценивать до последнего элемента или значения 10, которое, кажется, делает, тогда диапазон будет равен 10..0, но кажется, что диапазон пропускается и дает только два перечисленных значения. Это упражнение только для того, чтобы изучить PowerShell, для этого я не использую никакого конкретного приложения. Кстати, я получаю те же 10 1, только если я запускаю -1 без ().

Спасибо, Jason

1 Ответ

2 голосов
/ 05 февраля 2012

Это довольно просто

Посмотрим, что вернет -1..0:

-1
0

Таким образом, $ myArray [-1..0] эквивалентно $ myArray [-1, 0], следовательно, результат.

Но выражение 10..0 возвращает полностью измененный диапазон. Следовательно, выражение $myArray[$myArray[-1]..0] работает так, как вы и ожидали.

...