如何在PowerShell函数中将函数指定为scriptblock参数的默认值?

时间:2012-10-15 13:44:54

标签: function powershell parameters block defaults

鉴于这些powershell函数,其中foo将scriptblock作为参数:

function bar($name)
{
    "Hello World $name"
}

function foo([scriptblock]$fun={})
{
    &$fun "Bart"
}

是否可以在函数foo中指定函数栏作为$ fun的默认值而不是{}?

1 个答案:

答案 0 :(得分:2)

是的,有可能。例如,这种方式适用于传递函数:

foo ((get-command bar).scriptblock)

在你的情况下打印

Hello World Bart

因此,为了将其用作默认参数:

function foo([scriptblock]$fun=(get-command bar).scriptblock)
{
    &$fun "Bart"
}

现在只需致电

foo

获得相同的结果。