2

我试图计算在 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]  

你知道我怎么能做到这一点或类似的东西吗?谢谢

4

1 回答 1

2

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

于 2012-08-17T09:18:32.297 回答