在PowerShell中将函数(带参数)作为参数传递
我一直在使用ScriptBlocks成功地在PowerShell中传递无参数函数。但是,如果函数有参数,我就不能让它工作。在PowerShell中有这样做的方法吗?(最好是v2) 然后 将0写入控制台。Apply会调用在PowerShell中将函数(带参数)作为参数传递,powershell,functional-programming,powershell-2.0,first-class-functions,Powershell,Functional Programming,Powershell 2.0,First Class Functions,我一直在使用ScriptBlocks成功地在PowerShell中传递无参数函数。但是,如果函数有参数,我就不能让它工作。在PowerShell中有这样做的方法吗?(最好是v2) 然后 将0写入控制台。Apply会调用Add,但不会传入任何参数(即使用默认的[int]值0和0)好的,我找到了答案: 我想要${function:Add}而不是{Add}在调用Apply时使用PowerShell函数提供程序有一种更干净的方法来实现这一点。我需要能够根据运行时提供的XML文件,从其他具有可变参数数的源
Add
,但不会传入任何参数(即使用默认的[int]值0和0)好的,我找到了答案:
我想要
${function:Add}
而不是{Add}
在调用Apply
时使用PowerShell函数提供程序有一种更干净的方法来实现这一点。我需要能够根据运行时提供的XML文件,从其他具有可变参数数的源文件运行函数
在开发过程中,我在两个源文件中编写了一个小型的“Hello World”测试程序,这两个源文件应该是不言自明的(神奇的一行是“$x=(&$func$parm)”):
函数Hello($in){
写主机“Hello$in”
}
Trap for young player:大括号和函数细节之间不能有空格。因此,${function:Add}
(前导空格和尾随空格)、${function:Add}
(前导空格)或${function:Add}
(尾随空格)都将失败,出现错误您无法对空值表达式调用方法。
${function:Add},没有前导空格或尾随空格,工作正常。
Function Add([int] $x, [int] $y)
{
return $x + $y
}
Function Apply([scriptblock] $s)
{
write-host ($s.Invoke(1,2))
}
Apply { Add }