Есть ли простой способ передать определенные * именованные * параметры PowerShell напрямую в вызываемую функцию? - PullRequest
10 голосов
/ 05 августа 2009

Я уверен, что где-то читал, что существует простой способ передачи именованных параметров из вызывающей функции в вызываемую функцию без явного присвоения имени и указания каждого параметра.

Это больше, чем просто повторное использование позиции; Меня интересует случай, когда имя передаваемых параметров в одних случаях совпадает, а в других нет.

Я также думаю, что есть способ, который не зависит от позиции.

function called-func {
    param([string]$foo, [string]$baz, [string]$bar)
    write-debug $baz
    write-host $foo,$bar
}

function calling-func {
    param([int]$rep = 1, [string]$foo, [string]$bar)
    1..$rep | %{
        called-func -foo $foo -bar $bar -baz $rep ## <---- Should this be simpler?
    }
}

calling-func -rep 10 -foo "Hello" -bar "World"

Каким будет метод, и есть ли ссылка?

Я думал, что это мог быть Джеффри Сновер, но я не уверен.

Ответы [ 3 ]

3 голосов
/ 07 августа 2009

В PowerShell v2 (к которой, возможно, вы еще не готовы перейти), вы можете передавать параметры, не зная о них заранее:

called-func $PSBoundParameters

PSBoundParameters - это словарь всех параметров, которые фактически были предоставлены вашей функции. Вы можете удалить ненужные параметры (или добавить, я полагаю).

2 голосов
/ 05 августа 2009

Ну, я думаю, что я путаю сообщение в блоге Я читал о параметрах переключателя. Насколько я могу сказать, лучший способ - это просто использовать параметры следующим образом:

called-func -foo:$foo -bar:$bar
1 голос
/ 05 августа 2009

Как насчет

called-func  $foo $bar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...