PowerShell在函数中返回二维数组,之所以要写这篇文章,是因为有一个小陷阱,需要一个小窍门去规避。
第一个例子:伪二维数组
function test1()
{
$array= @(
@(1,2,3),
@(4,5,6),
@(7,8,9))
$array
}
$result = test1
$result[1]
输出:
4 5 6
这其实不是二维数组,而是一维数组嵌套而已。
第二个例子:二维数组被展开
function test2()
{
$array = New-Object 'int[,]' 3,3
$array[1,1]=11
$array[2,2]=22
$array
}
$result = test2
$result[1,1]
输出:
0 0
为什么这里没有输出11,而是输出了两个0?因为二维数组在返回时,被展开成了一维数组,这是PowerShell解释器的画蛇添足了。如何破解这画蛇添足,请看第三个例子。
第三个例子:二维数组原封不动
function test3()
{
$array = New-Object 'int[,]' 3,3
$array[1,1]=11
$array[2,2]=22
,$array
# 这里亦可换成@(,$array)
# 把二维数组包装在一个只有一个元素的一维数组中
# 即使外面的数组被展开了,内面的数组完好无损。
}
$result = test3
$result[1,1]
$result[2,2]
渴望已久的输出终于等到了:
11 22
本文链接: https://www.pstips.net/two-dimensional-array.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
