【问题标题】:Receive array with one array element from function从函数接收具有一个数组元素的数组
【发布时间】:2015-06-24 17:02:19
【问题描述】:

大家好! 我有一些函数可以将输入数组拆分为 $partitionCount 分区。返回值应该是一个数组数组。 如果 $partitionCount 等于 1,您不需要执行一些拆分逻辑,您可以返回输入数组本身。在这种情况下,powershell 会将返回结果展平为简单数组(而不是所需的数组数组)。

我尝试了 Stackoverflow 和其他资源中的以下方法:

  1. return @($input) 将结果展平为单个数组
  2. return @(,$input) 还将结果展平为单个数组
  3. return @($input, @()) 它有效,但使用空数组来防止扁平化,不好的一个
  4. $bucket = @(Split-Array $input 1) 在调用站点中放置一个数组指令,可以正常工作,但是您应该将其放置在每个调用中,这非常混乱且不明显

有没有正确的方法来处理这种情况?

【问题讨论】:

    标签: powershell powershell-2.0 powershell-3.0


    【解决方案1】:

    为防止单项数组变平,请在您尝试返回的数组前添加一个逗号 (,@($value)):

    function Get-SingleArray {
        param($InputArray)
    
        return ,@($InputArray[0])
    }
    

    演示:

    PS C:\> $a = Get-SingleArray 2,3,4,5
    PS C:\> $a[0] -eq 2
    True
    PS C:\> $a.GetType.FullName
    System.Object[]
    

    【讨论】:

    • 好像不行:function Return-Array([array]$data) { return ,@($data) } $a = Return-Array @(1,2,3) $a.Length #3
    猜你喜欢
    • 2017-02-03
    • 2018-05-08
    • 2018-10-26
    • 2019-12-06
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    相关资源
    最近更新 更多