如何在不将其转换为数组的情况下返回多个值?

时间:2019-10-30 02:56:32

标签: powershell return arguments

在powershell中,我有一个函数,我想返回多个值并将这些值用作第二个函数的位置参数。不幸的是,它以数组的形式返回一组值。如何避免这种情况?

此外,是否可以在不引入新变量的情况下避免这种行为?我知道我可以将返回的数组传递给变量,然后将其作为函数的参数进行喷溅,但我想尽可能避免这种情况。

说明我遇到的问题的代码如下:

function Return-Values{
    return "One", "Two", "Three"
}
function Print-Args{
    param($One,$Two,$Three)
    Write-Host "1" $One
    Write-Host "2" $Two
    Write-Host "3" $Three
}
Print-Args (Return-Values)

输出为:

1 One Two Three
2 
3 

我希望输出为:

1 One
2 Two
3 Three

1 个答案:

答案 0 :(得分:1)

您可以使用About Splatting。我无法如您所愿地完成功能工作。以下示例仅用一行代码即可完成您所希望的。也许别人知道另一种方式。

function Return-Values{
     return "One", "Two", "Three"
}

[System.Array]$InputArray = Return-Values #Get the input values as an array

function Print-Args{
    param($One,$Two,$Three)
    Write-Host "1" $One
    Write-Host "2" $Two
    Write-Host "3" $Three
}

Print-Args @InputArray #Use splatting for the input parameters