Как вернуть несколько значений без его приведения в виде массива? - PullRequest
0 голосов
/ 30 октября 2019

В 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 Ответ

1 голос
/ 30 октября 2019

Вы можете использовать О 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
...