このセクションでは、スクリプトの流れを制御するコマンドについて説明します。これらのコマンドは、条件(if、while)やループ(for)の機能を提供します。
注意: このセクションの内容は、『QT Script for Applications Manual』を直接参照したものです。
Break
このキーワードは、forループ、doループ、whileループならびにswitch文に使用されます。ループ内にbreak文が見つかると、制御はbreak文を含む最も内側のループの次の文に渡されます。ただし、break文の後にlabelの名前が続く場合、制御はそのラベルが支配する文に移ります。
break文は、通常、各ケースの最後、switch文内に配置され、インタープリタが次のケースに流れていくのを防ぎます。インタープリタがbreak文に遭遇すると、制御を最も内側のswitch文に続く文に渡します。すべてのケースに対応するbreakが存在する場合、最大でも1つのケースの文しか実行されません。break文にlabel name(label)が続く場合、breakに遭遇すると制御はそのlabelでマークされた文に移ります。これは、深く入れ子になったループから抜け出す場合などに便利です。
例:
Case
このキーワードはswitch文で使用されます。switch文の式が評価された結果のあらゆる値に対して、1つのケースを記述できます(ただしdefaultを参照)。ケースのリテラル値(Value)がswitch文の式の値に一致する場合、そのケースの文(Statements)が実行されます。
通常、ケース文はbreak文で終わり、これにより実行がswitch文の最後に移ります。
Continue
このキーワードは、for、while??doループの前後関係内で使用されます。
continue文がforループ内で見つかった場合、実行は直ちにforループの3番目の部分(通常はカウンタのインクリメント、デクリメントを行う部分)に移動し、通常通り実行が継続されます。つまり、ループの中央部分(条件)がテストされ、trueの場合にはループの本文が実行されます。
continue文がwhileまたはdoループ内で見つかった場合、実行は直ちに条件部分に移り、再度テストされます。条件がtrueのままであればループの本文が実行されます。
Default
このキーワードはswitch文で使用されます。これはcaseの代わりに使用され、switch文の式の評価結果すべてに一致します。defaultが使用されず、ケースのいずれも一致しない場合、switch 文は何も実行せず制御は次の文に移ります。defaultを使用する場合、switch文の最後のケースにしなければなりません。これは、defaultはあらゆる値に一致するため、インタープリタが到達すれば必ず実行され、続くケースは常に無視されるためです。defaultケースに遭遇すると、そのDefaultStatementsが実行されます。default文はbreakで終了するのが通常です。
Do
このキーワードはwhileと合わせて使用され、少なくとも1回実行されることが保証されるループを形成します。
doに続く括弧内のStatementsは1回実行されます。while条件がtrueと評価された場合、実行はdoに戻り、プロセス全体が繰り返されます。whileループの条件がfalseになった場合、実行はwhile文に続く文から継続されます。
例:
この例はコンソールに 5, 10, 15, ..., 45, 55, 60, 65, ..., 95 を出力します。
Else
elseキーワードはifと組み合わせて使用されます。
For
このキーワードは、決められた回数実行されるループを作成するのに使用されます。
for文は次の各部分に分かれます:キーワードであるfor、開き括弧、ゼロ個以上の文(1番目の部分)、セミコロン、条件式(2番目の部分)、セミコロン、ゼロ個以上の文(3番目の部分))、閉じ括弧、最後にforループにより支配される文またはブロックが続きます。
1番目の部分は通常、forループ文の2番目の部分の条件で使用される変数を初期化する(および宣言する)のに使用されます。この部分はループが???始される前に1回実行されます。この部分は空でも良い。
2番目の部分には条件式が含まれます。式はループの各繰り返し(初回を含め)の前に評価されます。式がfalseと評価されれば、forループにより支配される文またはブロックは実行されず、制御は次の文に移ります。条件が一度もtrueにならなければ、forループにより支配される文またはブロックも一度も実行されません。条件式がtrueであれば、forループに支配される文またはブロックが実行され、その後for文の3番目の部分が実行され、制御は条件式に戻りプロセス全体が繰り返されます。この部分は空にはできません。
3番目の部分には、ループの繰り返しの最後に毎回必ず実行しなければならない文が含まれています。この部分は通常、最初の部分で初期化され、その値が2番目の部分でテストされる変数をインクリメントするのに使用されます。この部分は空でも良い。
次の例では、エンティティ44から52までが選択されます。
If
if文は2方向の分岐を提供します。多方向の分岐はelse ifを使って作成します。
Switch
switch文は複数方向の分岐を提供します。expressionが1回評価され、その後expressionの値に一致するValueを持つケースがないか各ケースがチェックされます。もし一致が見つかった場合、一致するケースのStatements が実行され、その後制御はswitchブロックに続く文に移ります。もし一致するケースが見つからず、defaultケースが存在する場合、DefaultStatements が実行され、その後制御はswitchブロックに続く文に移ります。もし一致するケースが見つからず、defaultが存在しない場合、switch block内の文は何も実行されず、制御はswitchブロックに続く文に移ります。
もしdefaultを使用する場合は、すべてのケースの後に使用する必要があります。これは、defaultに遭遇すると、何が後に続くかに関係なく、一致するケースとして扱われるためです。
あらゆるケース、およびdefault(使用された場合)には最後の文としてbreakが必要です。breakが存在しなければ、制御は次の文に流れていってしまい、これは通常好ましい動作ではありません。
expression には、評価の結果、厳密に比較可能なオブジェクトとなる任意の Autodesk Simulation CFD スクリプト式を使用できます。例えば、評価の結果がブーリアン、日付、数および文字列値となる式です。
While
このキーワードは、コードのブロックを0回以上繰り返すのに使用されます。while文に遭遇すると、conditionが評価されます。conditionがtrueであれば、whileブロック内のStatementsが実行されます。そうでない場合、制御はwhileブロックに続く文に移ります。conditionがtrueであれば、Statementsが実行された後、conditionが再度評価され、プロセス全体が繰り返されます。
例: