如何将一个函数保存到变量中?

7
如何将一个函数保存到变量中?
function sayHello {
    write-host Hello, world!
}

$a = sayHello

然后,我想调用$a

另一个例子:

$a = get-childItem
$a -name

1
为什么有人想要这样做?因为$a -name会抛出错误,因为$a将保存get-childitem的内容,而不是从$a执行该库类。 - Ranadip Dutta
1个回答

24
您可以使用function变量作用域限定符来引用函数定义本身:
$helloFunc = $function:sayHello

现在你可以使用调用运算符(&)来调用它:
& $helloFunc

调用操作符也支持参数:

PS C:\> function test-param {param($a,$b) $b,$a |Write-Host}
PS C:\> $tp = ${function:test-param}
PS C:\> & $tp 123 456
456
123
PS C:\> & $tp -b 123 -a 456
123
456

很好。我完全不知道这个。 - Ranadip Dutta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接