PowerShell - 想要理解为什么$ myarr [( - 1).. 0]给出10 1但是$ myarr [$ myarr [-1] .. 0]给出了预期的10 9 8 ... 0

时间:2012-02-05 18:48:43

标签: arrays powershell range reverse

我希望通过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的练习,我没有具体的应用程序。顺便说一句,只有在没有()的情况下运行-1时,我得到相同的10 1。

谢谢, 杰森

1 个答案:

答案 0 :(得分:2)

很简单

让我们看看-1..0返回的内容:

-1
0

所以$ myArray [-1..0]相当于$ myArray [-1,0]因此结果。

但是10..0表达式返回整个范围。因此$myArray[$myArray[-1]..0]表达式可以正常工作。