2012-08-14 58 views
2

我想要计算FOR循环内条件为真的次数。 我为模板声明了一个额外的变量(FOUND:Integer),并且我试图在每次[IF]条件为“true”时增加它,但变量仅在第一次增加时返回到它的原始价值。 基本上,如果在开始时FOUND = 1,那么在每个循环中,我会得到2的输出。在FOR循环内增加一个变量

这是代码我试图使用方法:

[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] 

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

回答

2

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