Powershell:多维数组作为函数的返回值

cas*_*eew 9 powershell return-value multidimensional-array

我在PowerShell中遇到了二维数组的问题.这就是我想要做的事情:

我创建了一个应该返回二维数组的函数.在调用函数时,我希望返回值是一个新的二维数组.

为了更好地理解,我在下面添加了一个示例函数:

function fillArray() {
    $array = New-Object 'object[,]' 2,3

    $array[0,0] = 1
    $array[0,1] = 2
    $array[0,2] = 3

    $array[1,0] = 4
    $array[1,1] = 5
    $array[1,2] = 6

    return $array
}
$erg_array = New-Object 'object[,]' 2,3
$erg_array = fillArray

$erg_array[0,1] # result is 1 2
$erg_array[0,2] # result is 1 3
$erg_array[1,0] # result is 2 1
Run Code Online (Sandbox Code Playgroud)

结果不是我所期望的.我想以与函数中声明的方式相同的方式返回信息.所以我希望$erg_array[0,1]给我2而不是1,2我收到上面的代码.我怎样才能做到这一点?

Rom*_*min 10

为了在没有"展开"的情况下完全返回数组,请使用逗号运算符(请参阅参考资料help about_operators)

function fillArray() {
    $array = New-Object 'object[,]' 2, 3

    $array[0,0] = 1
    $array[0,1] = 2
    $array[0,2] = 3

    $array[1,0] = 4
    $array[1,1] = 5
    $array[1,2] = 6

    , $array # 'return' is not a mistake but it is not needed
}

# get the array (we do not have to use New-Object now)
$erg_array = fillArray

$erg_array[0,1] # result is 2, correct
$erg_array[0,2] # result is 3, correct
$erg_array[1,0] # result is 4, correct
Run Code Online (Sandbox Code Playgroud)

,创建具有单个项目的阵列(这是我们的阵列).这个1项数组在返回时展开,但只有一个级别,因此结果恰好是一个对象,我们的数组.如果没有,我们的数组本身被展开,它的项目将被返回,而不是数组.返回时使用逗号的这种技术也应该与其他一些集合一起使用(如果我们想要返回一个集合实例,而不是它的项目).