gpt4 book ai didi

powershell - 用SWITCH参数进行递归调用的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 23:12:29 25 4
gpt4 key购买 nike

在下面的示例中,我有一个IF语句来确定递归调用时将哪些参数发送到Demo。如果$y是 bool(boolean) 值而不是开关,我可以简单地调用Demo -x $x -y $y;但是作为一个开关,这不是一个可行的选择。

function Demo {
[CmdletBinding()]
param (
[int]$x
,[switch]$y
)
process {
$x--
if ($x -gt 0) {
"$x - $($y.IsPresent)"
if($y.IsPresent) {
Demo -x $x -y
} else {
Demo -x $x
}
}
}
}
Demo 10 -y
Demo 10

问题

以上是解决此情况的正确方法,还是存在更清洁的选项?

最佳答案

您可以通过这样调用它来强制使用一个开关参数:-Switch:$true(在大多数情况下显然是多余的)或-Switch:$false,因此对于您的示例:

Demo -y:$y

顺便说一下,在本示例中,您还可以使用splatting:
Demo @PSBoundParameters

但是您的帖子显然是MVCE,因此这可能不适用于您的实际工作,或者可能需要修改,尤其是 if you have default values for some parameters(完整披露:我的博客)。

关于powershell - 用SWITCH参数进行递归调用的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661152/

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