我正在尝试计算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]
你知道我怎么能达到这个或类似的东西? 感谢
答案 0 :(得分:2)
在Acceleo中,所有变量都是最终的。您可以使用集合来存储所有使用的值,然后计算其大小,或者如果您确实想要使用值,则可以使用Java服务。我建议使用查询来计算所有有用的元素,因为查询的评估结果存储在缓存中,对性能的影响将是最小的。