У меня есть рекурсивная функция Python, которая создает дерево, и я пытаюсь перевести его в Groovy.
Вот версия Python ...
def get_tree(vertices):
results = []
if type(vertices) != list:
vertices = [vertices]
for vertex in vertices:
results.append(vertex)
children = get_children(vertex)
if children:
child_tree = get_tree(children)
results.append(child_tree)
return results
Вот вывод get_tree (1) ...
[1, [2, 3, 4, [5, 3]]]
И вот моя попытка перевести это в Groovy замыкание ...
_tree = { vertices ->
results = []
vertices.each() {
results << it
children = it."$direction"().toList()
if (children) {
child_tree = _tree(children)
results << child_tree
}
}
results
}
Но это не работает - это то, что он возвращает ...
gremlin> g.v(1).outTree()
==>[v[5], v[3], (this Collection), (this Collection)]
О чем эти "Коллекции"?
У меня есть только поверхностное понимание Groovy, и я подозреваю, что это как-то связано с тем, как Groovy обрабатывает область рекурсии и закрытия.
Пожалуйста, просветите меня:)