我试图理解 Posh 中的数组展开,以下让我感到困惑。在这个例子中,我返回了包裹在另一个数组中的数组(使用逗号),这基本上给了我在外部数组在返回时展开后的原始数组。为什么当我通过在带有结果的变量上使用数组运算符 (@) 间接包装结果时会得到正确的结果(只是数组),但如果我直接在函数上使用 @ 会得到数组中的数组?@ 运算符对于不同类型的参数的行为是否不同?@ 运算符和数组展开是否有任何 PS 帮助文章?
function Unroll
{
return ,@(1,2,3)
}
Write-Host "No wrapper"
$noWrapper = Unroll #This is array[3]
$noWrapper | % { $_.GetType() }
Write-Host "`nWrapped separately"
$arrayWrapper = @($noWrapper) #No change, still array[3]
$arrayWrapper | % { $_.GetType() }
Write-Host "`nWrapped directly"
$directArrayWrapper = @(Unroll) #Why is this array[1][3] then?
$directArrayWrapper | % { $_.GetType() }
Write-Host "`nThe original array in elem 0"
$directArrayWrapper[0] | % { $_.GetType() }
谢谢