Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Powershell函数不会中断循环_.net_Loops_Powershell_For Loop_Recursion - Fatal编程技术网

.net Powershell函数不会中断循环

.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

我有一个powershell函数,它应该以预排序的方式返回树中的下一个可用节点,基本上是一个尚未遍历的节点。然而,我发现代码不会退出到调用函数的地方,而是返回到函数的foreach循环并跳到下一个分支,我不确定我到底做错了什么。代码如下:

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)之后添加返回是否会退出函数?如果希望函数在该点停止,则需要对嵌套调用的返回执行一些操作。然后,你还需要能够从下次结束的地方重新开始。您希望如何使用此函数?您希望这个函数如何工作?