gpt4 book ai didi

powershell - 简洁地传递函数作为参数

转载 作者:行者123 更新时间:2023-12-03 01:16:36 25 4
gpt4 key购买 nike

此函数接受两个值和一个函数,并使用两个值调用该函数:

function abc ($a, $func, $b) { &$func $a $b }

定义要传递的函数:
function bcd ($x, $y) { $x + $y }

bcd传递给 abc:
abc 10 bcd 20

结果是 30

似乎没有传递 bcd函数对象本身,而是传递了字符串“bcd”。然后 abc通过名称调用 bcd

这是将功能传递给另一个功能的可接受方法吗?我见过的大多数示例都建议在脚本块中传递一个函数,该脚本块将在接收函数中调用。但是,该方法比上述方法更为冗长。

最佳答案

您是正确的,只要作用域的变化范围不足以使命名无效即可。因此,对于真正的通用代码而言,它有点脆弱。例如,即使在您的个人资料脚本中,我也不推荐这样做。 (从一些痛苦的经验中得知,这里的概要文件功能不足。)

但是,请考虑以下示例,该示例更短,更可靠:

function abc($a, $func, $b) { &$func $a $b }
abc 10 { param($a, $b); $a+$b } 20

(打印出 30。)您可以使用 param块执行通常需要执行的任何操作,包括验证。
abc 10 {param([parameter(Mandatory=$true)]$a, [parameter(Mandatory=$true)]$b); $a+$b} 20

另外,可以这样预定义函数:
$bcd = { param($a, $b); $a+$b }

并照常继续:
abc 10 $bcd 20

关于powershell - 简洁地传递函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27935711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com