(转)Powershell 创建二维数组

转自:https://www.pstips.net/two-dimensional-array.html

 

PowerShell在函数中返回二维数组,之所以要写这篇文章,是因为有一个小陷阱,需要一个小窍门去规避。

第一个例子:伪二维数组

1

2

3

4

5

6

7

8

9

10

11

function test1()

{

    $array= @(

    @(1,2,3),

    @(4,5,6),

    @(7,8,9))

 

    $array

}

$result = test1

$result[1]

输出:

4
5
6

这其实不是二维数组,而是一维数组嵌套而已。

第二个例子:二维数组被展开

1

2

3

4

5

6

7

8

9

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解释器的画蛇添足了。如何破解这画蛇添足,请看第三个例子。

第三个例子:二维数组原封不动

1

2

3

4

5

6

7

8

9

10

11

12

13

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值