単純式について最も基本的なフォームでは、FormCalc の式は、論理的な方法で文字列化された演算子、キーワードおよびリテラルの集まりになっています。例えば、以下はすべて単純式です。
2
"abc"
2 - 3 * 10 / 2 + 7
FormCalc の各式は、演算子の順序が式の構文では必ずしも明らかになっていない場合でも、演算子の従来の順序に従って単一の値に解決されます。例えば、以下の式のセットは、フォームデザインのオブジェクトに適用されたときに等価な結果になります。
式
|
等価な式
|
戻り値
|
"abc"
|
"abc"
|
abc
|
2 - 3 * 10 / 2 + 7
|
2 - (3 * (10 / 2)) + 7
|
-6
|
10 * 3 + 5 * 4
|
(10 * 3) + (5 * 4)
|
50
|
0 and 1 or 2 > 1
|
(0 and 1) or (2 >1)
|
1(true)
|
2 < 3 not 1 == 1
|
(2 < 3) not (1 == 1)
|
0(false)
|
上の表から分かるように、FormCalc のすべての演算子には、式での優先順位があります。次の表に演算子の階層を示します。
優先順位
|
演算子
|
高
|
=
|
|
(単項)-、+、not
|
|
* , /
|
|
+ , -
|
|
<、<=、>、>=、lt、le、gt、ge
|
|
==、<>、eq、ne
|
|
& , and
|
低
|
| , or
|
演算値の型変換指定された処理内の演算値がその処理の期待された型と一致しない場合、FormCalc は、必要な型と一致するように演算値を型変換します。この型変換がどのように行われるかは、処理で必要とされる演算値の型によって異なります。
数値の処理数値以外の演算値が関係する数値処理を実行する場合、まず、数値以外の演算値が、相当する数値に型変換されます。数値でない演算値が正しく数値に変換されない場合、その値は 0 です。null 値の演算値を数値に型変換するとき、その値は常に 0 です。
次の表に、数値以外の演算値の型変換の例を示します。
式
|
等価な式
|
戻り値
|
(5 - "abc") * 3
|
(5 - 0) * 3
|
15
|
"100" / 10e1
|
100 / 10e1
|
1
|
5 + null + 3
|
5 + 0 + 3
|
8
|
Boolean 値の処理Boolean 値以外の演算値に対して Boolean 処理を実行する場合、まず、Boolean 値以外の演算値が、相当する Boolean 値に型変換されます。Boolean 値以外の演算値がゼロ以外の値に正しく変換されない場合、演算値の値は true(1)です。正しく変換される場合は、演算値の値は false(0)です。null 値の演算値を Boolean 値に型変換させる場合、演算値の値は常に false(0)です。例えば、次の式
"abc" | 2
は、1 と評価されます。つまり、false | true = true で、一方、
if ("abc") then
10
else
20
endif
は、20 と評価されます。
文字列の処理文字列以外の演算値に対して文字列処理を実行する場合、まず、文字列以外の演算値の値を文字列として使用することにより、演算値が文字列に型変換されます。null 値の演算値を文字列に型変換させる場合、演算値の値は常に空文字列です。例えば、次の式
concat("The total is ", 2, " dollars and ", 57, " cents.")
は、"The total is 2 dollars and 57 cents." と評価されます。
注意: 数式の評価中、中間ステップとして NaN、+Inf、-Inf のいずれかが出た場合、FormCalc ではエラー例外が生成され、数式の残りの部分にそのエラーを伝えます。したがって、式の値は常に 0 になります。例えば、
3 / 0 + 1
は、0 と評価されます。
|
|
|