• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PowerShell实现统计函数嵌套深度

    当你调用某个函数时,PowerShell会增加一次嵌套层次。当一个函数调用了另一个函数,或着脚本,也会增加嵌套层次。今天分享一个函数,它能告诉你的脚本嵌套的层次:

    function Test-NestLevel
    {
    $i = 1
    $ok = $true
    do
    {
    try
    {
    $test = Get-Variable -Name Host -Scope $i
    }
    catch
    {
    $ok = $false
    }
    $i++
    } While ($ok)
     
    $i
    }
    
    

    当你调用的函数具有递归调用时,上面的函数非常有用,来看一个调用的示例:

    function Test-Diving
    {
    param($Depth)
     
    if ($Depth -gt 10) { return }
     
    "Diving deeper to $Depth meters..."
     
    $currentDepth = Test-NestLevel
    "calculated depth: $currentDepth"
     
    Test-Diving -depth ($Depth+1)
    }
     
    Test-Diving -depth 1
     


    当你运行Test-Diving时,函数会调用自己10次。函数使用一个参数来控制嵌套层次,而Test-NestLevel负责返回确切的深度数。

    注意这里有个区别:Test-NestLevel返回绝对的嵌套层次,参数会纪录这个函数调用自己多少次。如果Test-Diving被嵌入到另外一个函数中,绝对深度和相对深度会不同。

     

    PS C:\&; Test-Diving -Depth 1
    diving deeper to 1 meters...
    calculated depth: 1
    diving deeper to 2 meters...
    calculated depth: 2
    diving deeper to 3 meters...
    calculated depth: 3
    diving deeper to 4 meters...
    calculated depth: 4
    diving deeper to 5 meters...
    calculated depth: 5
    diving deeper to 6 meters...
    calculated depth: 6
    diving deeper to 7 meters...
    calculated depth: 7
    diving deeper to 8 meters...
    calculated depth: 8
    diving deeper to 9 meters...
    calculated depth: 9
    diving deeper to 10 meters...
    calculated depth: 10
     
    PS C:\&;  { Test-Diving -Depth 1 }
    diving deeper to 1 meters...
    calculated depth: 2
    diving deeper to 2 meters...
    calculated depth: 3
    diving deeper to 3 meters...
    calculated depth: 4
    diving deeper to 4 meters...
    calculated depth: 5
    diving deeper to 5 meters...
    calculated depth: 6
    diving deeper to 6 meters...
    calculated depth: 7
    diving deeper to 7 meters...
    calculated depth: 8
    diving deeper to 8 meters...
    calculated depth: 9
    diving deeper to 9 meters...
    calculated depth: 10
    diving deeper to 10 meters...
    calculated depth: 11
     
    PS C:\&;
    


    Test-NestLevel总会返回从当前代码的作用域到全局作用域的嵌套深度。

    上一篇:PowerShell在控制台输出特殊符号的方法
    下一篇:Powershell互斥参数使用实例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PowerShell实现统计函数嵌套深度 PowerShell,实现,统计,函数,