【问题标题】:PowerShell multidimensional Array issuePowerShell多维数组问题
【发布时间】:2020-04-09 10:29:17
【问题描述】:

我正在创建多维数组

cls
$b=[Collections.ArrayList]::new()
$a=4,5,6
[void]$b.Add($a)
$a1=7,8,9
[void]$b.Add($a1)

"Value is: "+$b[0][1]+" ."
"Size  is: "+$b.Count+" ."
""###
function arr(){
    $b=[Collections.ArrayList]::new()
    $a=4,5,6
    [void]$b.Add($a)
    $a1=7,8,9
    [void]$b.Add($a1)
    return $b
}
$c=arr
"Value is: "+$c[0][1]+" ."
"Size  is: "+$c.Count+" ."

输出:

Value is: 5 .
Size  is: 2 .

Value is: 5 .
Size  is: 2 .

现在一切都正确了。函数返回原始状态的数组,没有任何变形。 但我无法事先知道数组大小,当数组大小为 1 时,我会遇到下一个问题:

cls
$b=[Collections.ArrayList]::new()
$a=4,5,6
[void]$b.Add($a)

"Value is: "+$b[0][1]+" ."
"Size  is: "+$b.Count+" ."
""###
function arr(){
    $b=[Collections.ArrayList]::new()
    $a=4,5,6
    [void]$b.Add($a)
    return $b
}
$c=arr
"Value is: "+$c[0][1]+" ."
"Size  is: "+$c.Count+" ."

输出:

Value is: 5 .
Size  is: 1 .

Value is:  .
Size  is: 3 .

当数组从函数中移出时,他从多维转变为一维,输出中没有我的值。我怎样才能避免这个错误?

【问题讨论】:

标签: powershell


【解决方案1】:

代码中的返回行应如下所示:

return (, $b)

这会强制 powershell 立即返回您的对象。默认情况下,它分别返回每个元素。

在文档中了解更多信息:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_return?view=powershell-7 搜索一元数组表达式

【讨论】:

    猜你喜欢
    • 2014-01-12
    • 2012-03-12
    • 2016-07-22
    • 2011-04-24
    • 2018-01-05
    • 2010-11-18
    • 2022-12-15
    • 1970-01-01
    相关资源
    最近更新 更多