随笔 - 89, 评论 - 163, 引用 - 33

导航

关于

标签

每月存档

最新留言

广告

 

[原文作者]:Jared Parsons

[原文链接]:PowerShell LINQ: Skip-While

     在PowerShell LINQ这个系列中,接下来要介绍的就是SkipWhile。这个LINQ函数带有一个枚举类型的实例和一个判断条件。这个函数中的判断条件以当前元素的值来作为参数进行判断,只要判断条件为true就跳过该元素,直到判断条件为false时,将剩余的元素全部返回。

     LINQ版本以Func<T,TResult>的形式传入判断条件。在PowerShell中等价于delegate的是一个脚本块,但是它和.Net delegate不同,它没有什么途径可以使得Skip-While函数接受特殊的数字或者特殊的参数类型,不过在调用该函数时,将会获得相关契约的暗示。

    这个函数会自动匹配SkipWhile 的LINQ版本的相关契约,而不需要给它绝对的输入。

    #============================================================================

    # Skip while the condition is true

    #============================================================================

    function Skip-While() {

    param ( [scriptblock]$pred = $(throw "Need a predicate") )

    begin {

    $skip = $true

    }

    process {

    if ( $skip ) {

    $skip = & $pred $_

    }

    if ( -not $skip ) {

    $_

    }

    }

    end {}

    }

    用例如下:

    PS) 1..10 | Skip-While { $args[0] -lt 6 }

    6

    7

    8

    9

    10

    PS)

打印 | 张贴于 2009-02-20 14:29:35 | Tag:暂无标签

留言反馈

暂时没有留言纪录
博客主人设置本博客不允许匿名用户发表言论,请登录后再试

Powered by: Joycode.MVC引擎 0.5.2.0