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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!