增加FOR循环内的变量

时间:2012-08-14 15:11:36

标签: eclipse-emf acceleo ocl

我正在尝试计算FOR循环中条件为真的次数。 我为模板声明了一个额外的变量(FOUND:Integer),并且每次[IF]条件为“true”时我都会尝试递增它,但是变量仅在第一次递增,然后它恢复到原来的状态值。 基本上,如果开头的FOUND = 1,那么在每个循环中我得到2个输出。

这是我正在尝试使用的代码:

[template public genPartnerLinkJavaFile(aProcess : Process, varNameList : Sequence{String} .... etc)
 {FOUND : Integer = 1;}]
    [file ('PL'+aPartnerLink.name.toUpperFirst()+'.java', false, 'UTF-8')]
    public class ['PL'+aPartnerLink.name.toUpperFirst()/] {

[for (aVariable  : Variable | aProcess.eAllContents(Variable))]  
    [if (varNameList->includes(aVariable.name.toString() ) )]
    [FOUND+1/]
    [i/]
    [/if]
[/for]  

你知道我怎么能达到这个或类似的东西? 感谢

1 个答案:

答案 0 :(得分:2)

在Acceleo中,所有变量都是最终的。您可以使用集合来存储所有使用的值,然后计算其大小,或者如果您确实想要使用值,则可以使用Java服务。我建议使用查询来计算所有有用的元素,因为查询的评估结果存储在缓存中,对性能的影响将是最小的。