Groovy,在不为null时收集属性后面的对象?

Groovy,在不为null时收集属性后面的对象?,groovy,Groovy,groovy中是否已经有一种方法可以在不为null的情况下收集属性后面的对象 Object.metaClass { collectWhileNotNull = { Closure follow -> def result = [] def previous = null for (def current = delegate; !current.is(previous) && (current != null); c

groovy中是否已经有一种方法可以在不为null的情况下收集属性后面的对象

Object.metaClass {
    collectWhileNotNull = { Closure follow ->
        def result = []

        def previous = null
        for (def current = delegate; !current.is(previous) && (current != null); current = follow(current)){
            result << current
            previous = current
        }

        return result
    }
}

您可以使用来自的
生成器
类(这也是必要模式的名称)。

也许我们可以使用Stream:Wow,这应该是一个公认的答案。还有一本食谱。以及核心Groovy中的一个包含项。
Closure getAncestors = { Node n -> n.collectWhileNotNull{ it.parent() }.tail().reverse() }