我已经创建了一个递归函数来格式化我的控制台输出,但是我在尝试将任何参数传递给下一个递归时遇到了麻烦。
以下是该功能的相关部分:
function exo {
Param(
[Parameter]$function,
[Parameter][string]$message,
[Parameter]$alt,
[switch]$continue, [switch]$return, [switch]$skip
)
Process {
...
if($alt) {
$out = exo $alt -return:$return -continue:$continue
}
...
问题在于,当我将块中的第二个exo传递给第一个时,powershell包含了作为该块的一部分的所有内容,甚至是消息和开关。
以下是一个例子:
exo { write-host "This block executes first" } "Message for this block" `
{ exo { write-host "This block executes next" } "But the closing bracket doesn't register, and this message is executed as code" }
逃离支架似乎没有办法解决问题。有没有办法将参数传递给递归函数?
提前感谢您的帮助。
答案 0 :(得分:0)
您的第一个问题是您没有正确使用[Parameter()]属性。 parens是必需的:
function exo {
Param(
[Parameter()]$function,
[Parameter()][string]$message,
[Parameter()]$alt,
[switch]$continue,
[switch]$return,
[switch]$skip
)
...
}
在修复之后似乎是递归,虽然第二次通过exo
$ alt是$ null,因此它不会根据你的代码片段再次执行$ function AFAICT。