2012-08-14 86 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服務。我建議使用查詢來計算所有有用的元素,因爲查詢評估的結果存儲在緩存中,所以對性能的影響將很小。