我在 grails 中定义了递归域类:
class Work {
String code
String title
String description
static hasMany = [subWorks:Work]
static mappedBy = [subWorks: 'parentWork']
Work getRootWork(){
if(parentWork) return parentWork.getRootWork()
else return this
}
boolean isLeafWork(){
return subWorks.isEmpty()
}
boolean isRootWork(){
return !parentWork
}
我有一个作品列表,但尚未建立层次结构。结构如下:
def works = [new Work(code:'A', title:'TitleA'),
new Work(code:'B', title:'TitleB'),
new Work(code:'A.1', title:'Titile A.1'),
new Work(code:'B.1', title:'Title B.1'),
new Work(code:'B.2', title:'Title B.2'),
new Work(code:'B.3', title:'Title B.3'),
new Work(code:'B.2.2', title:'Title B.2.2'),
new Work(code:'B.2.3', title:'Title B.2.3'),
new Work(code:'A.1.1', title:'Title A.1.1'),
new Work(code:'A.1.2', title:'Title A.1.2'),]
我需要的是根据提示的代码建立这些作品之间的层次关系。例如 A.1 是 A 的第一个子工作;B.1.1 是 B.1 工作的第一个孩子,其父母是 B 工作。我知道 Groovy 支持递归闭包来构建这种层次结构。如何使用 Groovy 递归闭包实现我的目标,例如 Groovy 官方文档中的 JN2515 斐波那契数示例?非常感谢!