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

标签 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 返回什么:

-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/

相关文章:

javascript - 使用从 HTML 到电子表格的相关值时出现问题?

java - 在 Java 中初始化对象类中的静态数组

php - 如果索引小于某个值,则打印所有数组字符串

javascript - 数组和 For 循环 JS 的逻辑问题

powershell - 术语 'Get-WebBinding' 未被识别为 cmdlet、函数、脚本文件或可操作程序的名称

powershell - 如何在 PowerShell 自定义 PSObject 上使用 GetType().GetProperties()?

arrays - SQLite 从表中删除字段与数组中的对象不匹配的表

powershell - 新创建的响应组工作流未列出

Java:字符串索引超出范围:-1

algorithm - 如何测试整数范围是否与整数列表重叠?