掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     loopのフラグメントでfor文を出すには


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
tkouno
投稿日時: 2009-10-8 11:16
EA Administrator
投稿: 4288

loopのフラグメントでfor文を出すには

○ご質問

シーケンス図のloopのフラグメントからは、現在は
while文のみが出力されるようになっているようです。

for文を出力する方法はありますか?

○回答

現時点では、ご指摘のようにwhile以外を生成することはできません。
テンプレートの内容を、以下のようにカスタマイズする必要があります。

for文については、例えばAction Loopテンプレートの19行目からの7行を
以下のように変更することで、for文で出すことも可能となります。

%if $lower != ""%
for ($lower; $upper; ;)\n
%elseIf $expression != ""%
while ($expression)\n
%else%
while (true)\n
%endIf%

そして、対象のloopフラグメントに「状態」として
「(i=2,i<3)」のような内容を追加して下さい。
(名前として追加するのではありません。)

この2つの値がLowerとUpperになります。
tkouno
投稿日時: 2009-10-14 15:13
EA Administrator
投稿: 4288

Re: loopのフラグメントでfor文を出すには

補足として、for文の第3引数を追加したい場合には
タグ付き値に情報を格納し、その情報を
コード生成テンプレートから参照する形になります。

例えば、シーケンス図のLoopフラグメントにタグ付き値「adder」を
値「i++」で定義しておきます。

そして、Action Loopテンプレートの$lowerに対する操作の下で

$adder = %EASL_GET("Property", $GUID, "GetTaggedValue","adder")%

のようにしてタグ付き値の値を取得し、

for ($lower; $upper; $adder;)\n

のように、値を利用します。
(タグ付き値が設定されていない場合には、既定のテンプレートと
同じ結果になります。)

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ