10

我确信我在某处读到,有一种简单的方法可以将命名参数从调用函数传递到被调用函数,而无需显式命名和指定每个参数。

这不仅仅是重用职位;我对传递参数的名称在某些情况下相同但在其他情况下不同的情况感兴趣。

我也认为有一种方法不依赖于位置。

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"

方法是什么,有链接吗?

我以为可能是 Jeffrey Snover,但我不确定。

4

3 回答 3

3

在 PowerShell v2 中(诚然,您可能还没有准备好使用它)允许您在不提前知道参数的情况下传递参数:

called-func $PSBoundParameters

PSBoundParameters 是实际提供给函数的所有参数的字典。您可以删除不需要的参数(或添加我想)。

于 2009-08-07T03:49:07.067 回答
2

好吧,我想我在阅读一篇关于开关参数的博客文章时感到困惑。据我所知,最好的方法是像这样重用参数:

called-func -foo:$foo -bar:$bar
于 2009-08-05T19:07:33.117 回答
1

怎么样

called-func  $foo $bar
于 2009-08-05T15:57:25.433 回答