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