如何在加速器中关闭工作?

时间:2015-03-17 19:39:59

标签: acceleo

我有一个带有子元素名称nextElement

的元素
a.nextElement is b
b.nextElement is c
c.nextElement is d

当我发出请求a-> closure(a.nextElement)时,我希望得到一个带有b,c和d的集合,但我只得到b。我不理解或做错了什么?

1 个答案:

答案 0 :(得分:0)

你尝试过类似的东西吗?:

a -> closure(child:Element | true)

true是一个表达式。您可以指定您需要的任何条件。

我看到它here

即使我不确定Acceleo API中是否包含closure(我再说一遍,不确定)。我尝试使用closure函数,但IDE没有向我建议。

在我的项目中,我自己做了这个通用查询:

[query public descendants(aElement : Node): 
    Set(Node) =  if (aElement.oclIsTypeOf(Element)) then
                        Set{aElement} -> union (aElement.oclAsType(Element).children 
                            -> collect (n : Node | descendants(n)) -> asSet() )  
                    else
                        Set{aElement}
                    endif 
    /]

我希望这会有所帮助!!!