我想更好地了解 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
返回什么:
-1
0
因此 $myArray[-1..0] 相当于 $myArray[-1, 0],因此结果是这样的。
但是 10..0 表达式返回反转的整个范围。因此 $myArray[$myArray[-1]..0]
表达式按您的预期工作。
关于arrays - PowerShell - 想要了解为什么 $myarr[(-1)..0] 给出 10 1 但 $myarr[$myarr[-1]..0] 给出预期的 10 9 8 ... 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9151970/