【发布时间】:2012-06-26 21:43:27
【问题描述】:
我正在尝试理解 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() }
谢谢
【问题讨论】:
-
为什么在
Unroll函数中使用逗号运算符?
标签: powershell