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では、すべての変数がfinalです。コレクションを使用して、使用されているすべての値を格納してからそのサイズを計算するか、本当に値を使用する場合はJavaサービスを使用できます。クエリの評価結果はキャッシュに保存されるため、クエリを使用してすべての有用な要素を計算することをお勧めします。パフォーマンスへの影響は最小限に抑えられます。

于 2012-08-17T09:18:32.297 に答える