@If では、条件が True か False かによって、実行するステートメントを変えられます。条件は一般的に値の比較ですが、定数、変数、@関数の結果であってもかまいません。以下に例を示します。
- @ViewTitle = "By Author" は、現在のビューの名前が「By Author」なら True です。
- @Elements(Categories) > 0 は、[Categories] に 1 つでも要素があれば True です。
- 1 を条件として使用すると True を意味します。@True と @Yes は 1 を返します。比較の @関数と条件を評価する @関数は、条件が True なら 1 を返します。
- 0 を条件として使用すると False を意味します。@False と @No は 0 を返します。比較の @関数と条件を評価する @関数は、条件が False なら 0 を返します。
@If ステートメントは、次のように最低 3 つの奇数個のパラメータを取ります。
- 最初のパラメータは条件を示します。ステートメントに条件が複数ある場合は、最初のパラメータとそれ以降の 1 つおきのパラメータが条件となります。
- 2 番目のパラメータは、条件が True の場合に実行されるステートメントです。@If ステートメントに複数の条件がある場合は、以降のパラメータは 1 つおきに実行ステートメントになります。
- 最後のパラメータは、条件が False の場合に実行されるステートメントです。
最も簡単な @If ステートメントの構文は次のとおりです。
@If(condition; True statement; False statement)
3 つの条件のある @If ステートメントの構文は、次のようになります。
@If(condition1; True1; condition2; True2; condition3; True3; False)
@If 関数は左から右に評価されます。最初の条件が True なら、それに対応する True の場合のステートメント (次のパラメータ) が実行されます。@If ステートメント内でそれ以上の評価や処理は行われません。どの条件も False なら、False の場合のステートメント (最後のパラメータ) が実行されます。
True と False のステートメントは、内容に応じてさまざまな形式になります。
- @If ステートメントが、結果として評価される式の最後のステートメントなら、True と False のステートメントが結果として評価されなければなりません。
- @If ステートメントが代入の右辺なら、True と False のステートメントは左辺にあるフィールドまたは一時変数への代入に適した値を計算しなければなりません。
- それ以外の場合は、True と False のステートメントはアクションを実行しなければなりません。
True ステートメントと False ステートメントのアサインメントは、2 つのフォームがあります。
- 「クラシック」フォームは、@If ステートメント全体の結果を割り当て、それぞれの True ステートメントと False ステートメントは値だけで構成されています。
variable := @If(condition; value1; value2)
- あるいは、True ステートメントと False ステートメントを完全なアサインメントにできます。
@If(condition; variable := value1; variable := value2)
注: 2 番目のフォームは、Release 6 で新しく追加されました。
@If のパラメータが @If ステートメントになっていてもかまいません。ネスト構造の @If ステートメントは、式言語の限られた論理構成で作業する場合には便利ですが、構文は複雑になります。
@Do 関数は、True か False かの条件に応じて複数のステートメントを実行する手段を提供します。