在我们当前的应用程序中,我们需要遍历树并捕获特定设备(和子设备)上的所有运算符。一个设备可以有子设备,上面也有特定的操作符。
由于我是在 Groovy 中使用递归的新手,我想知道我做的事情是否正确..?有什么指针可以帮助我学习更好的做事方式吗?
def listOperators(device) {
// list with all operator id's
def results = []
// closure to traverse down the tree
def getAllOperators = { aDevice->
if(aDevice) {
aDevice.operators.each { it ->
results << it.id
}
}
if (aDevice?.children) {
aDevice.children.each { child ->
results << owner.call(child)
}
}
}
// call the closure with the given device
getAllOperators(device)
// return list with unique results
return results.unique()
}