オブジェクトの構造のような単純なツリーを構築し、各オブジェクトの深さレベルを識別しようとしています。これを行うために、再帰関数を作成しましたが、この関数は常に最後の結果を返し、予想される合計結果ではありません。おそらく結果を間違った場所に保存します。
def getStructure(anObject, level=0) {
def results = []
// [parent id, object id, level]
if(anObject.parent == null) {
results.add([0, anObject.id, level])
} else {
anObject.children?.each { child ->
results.add([anObject.parent.id, child.id, level])
}
// recursive call
anObject.children?.each { child ->
getStructure(child, level++)
}
results
}
私のテストケースでは、常に最新の実行を取得するため、結果 = [] が毎回再初期化されると思います。再帰関数の結果を保存するにはどうすればよいですか?