.net Powershell函数不会中断循环
我有一个powershell函数,它应该以预排序的方式返回树中的下一个可用节点,基本上是一个尚未遍历的节点。然而,我发现代码不会退出到调用函数的地方,而是返回到函数的foreach循环并跳到下一个分支,我不确定我到底做错了什么。代码如下:.net Powershell函数不会中断循环,.net,loops,powershell,for-loop,recursion,.net,Loops,Powershell,For Loop,Recursion,我有一个powershell函数,它应该以预排序的方式返回树中的下一个可用节点,基本上是一个尚未遍历的节点。然而,我发现代码不会退出到调用函数的地方,而是返回到函数的foreach循环并跳到下一个分支,我不确定我到底做错了什么。代码如下: function Get-nextAvailable { param ( $tree } $nextNode = $null foreach ($branch in $tree){ if ($b
function Get-nextAvailable {
param (
$tree
}
$nextNode = $null
foreach ($branch in $tree){
if ($branch.traversal -eq $false){
return $branch
}
else {
Get-nextAvailable ($branch.children)
}
}
}
您正在脱离最近的控制元素 如果你需要打破一个不同的,你可以使用标签。有关详细信息,请参阅
关于\u break的帮助
顺便提一下:为什么不直接返回呢
另外,您没有使用嵌套的Get nextAvailable
调用的返回值。返回也在做同样的事情,我想返回变量并退出整个函数,但它将继续到树的下一个分支break
退出最内部的循环<代码>返回
退出该功能。他们不可能做同样的事情。也就是说,您忽略了嵌套调用的返回值,因此,如果遇到这种情况,您将遍历整个树,因为只有这样才能退出。因此,当$branch.traversal
为$true
时,在完成整个行走之前,您永远不会退出。有没有办法提前退出?在Get-nextAvailable($branch.children)之后添加返回是否会退出函数?如果希望函数在该点停止,则需要对嵌套调用的返回执行一些操作。然后,你还需要能够从下次结束的地方重新开始。您希望如何使用此函数?您希望这个函数如何工作?