2

null ではなく、プロパティに続くオブジェクトを収集する方法は既に Groovy にありますか?

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
    }
}

再帰的なデータ構造に役立ちます。

groovy.util.Node の使用例:

Closure getAncestors = { Node n -> n.collectWhileNotNull{ it.parent() }.tail().reverse() }
4

1 に答える 1

0

cookbookGeneratorのクラス (これは必要なパターンの名前でもあります) を使用できます。

于 2012-12-14T00:25:38.537 に答える