代码之家  ›  专栏  ›  技术社区  ›  Jim

为什么我的PowerShell多维数组被解释为一维数组?

  •  8
  • Jim  · 技术社区  · 15 年前

    我有以下代码:

    function HideTemplates($File, $Templates)
    {
      foreach ($Template in $Templates)
      {
        Write-Host $Template[0] $Template[1] $Template[2]
      }
    }
    
    HideTemplates "test.xml" @(("one", "two", "three"))
    HideTemplates "test.xml" @(("four", "five", "six"), ("seven", "eight", "nine"))
    

    它打印:

    o n e
    t w o
    t h r
    four five six
    seven eight nine
    

    我要打印:

    one two three
    four five six
    seven eight nine
    

    我的代码有问题吗?有没有一种方法可以强制PowerShell以不同的方式使用单个项遍历多维数组?

    1 回复  |  直到 9 年前
        1
  •  9
  •   Keith Hill    15 年前

    像这样调用函数:

    HideTemplates "test.xml" (,("one", "two", "three"))
    HideTemplates "test.xml" (,("four", "five", "six"),("seven", "eight", "nine"))
    

    数组子表达式ie @() 如果内容已经是数组,则不执行任何操作。请改用逗号运算符,它将始终创建一个数组,数组后面的任何元素都有一个元素。请注意,您必须添加一组额外的parens,否则:

    HideTemplates "test.xml",("one", "two", "three")
    

    将被视为数组类型的单个参数,而不是两个参数。