私は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() }
ありがとう