式は 1 行に収まるのが普通ですが、必要な場合は 1 つの式を次の行に続けることもできます。
上の式は 5 つの式で構成されています。この式は、25 が式の中の最後の式の値なので、数値型の値 25 を返します。
例
//式の例 //最初の式。その値は数値型の //値 30 です 10 + 20; //2 番目の式。その値は文字列型の //値 "Hello World" です。この文字列は 2 行を使用しています "Hello " + "World"; //3 番目の式。その値は数値型です {Orders Detail.数量} * 2 - 5; //4 番目の式。その値は文字列型です If {Orders Detail.数量} > 1 Then "2 個以上" Else "1 個"; //5 番目の最後の式。その値は数値型の //値 25 です 20 + 5
式の中の最後の式の後にもセミコロンを入れることができますが、これは任意です。たとえば、セミコロンを使用して、上の式を次のように終了することもできます。
20 + 5;
「式」で示されている式の例の一部には、セミコロンが使用されていません。それは、それらの式が 1 つの式で構成されており、最後の式の後のセミコロンは任意だからです。Crystal 構文の式の多くは単一の式として作成できます。
“2 個以上”という文字列の後にはセミコロンがない点に注目してください。そこに実際にセミコロンを入れると、プログラムによってエラーが知らされます。それは、セミコロンが式を区切るためのものであり、一方
Else "1 個";
は別の式ではないからです。この部分を If から切り離すことはできません。実際この部分には、式が一定の状況の下で返す値が記述されているので、If 式には不可欠です。
注 この例では、式の中の最初の 4
つの式が最後の式に何の影響も及ぼさないので、実際に使用されるような式の例ではありません。
Crystal 構文の式が式の連なりから成り、各式の値が最終的な式の値にもなるということは、Crystal 構文を理解する上で最も重要な点です。式を基本にするこの構文を使用すると、多数の機能を持つたいへん短い式を記述できます。
例
//最初の式。この式は、数値型の変数 x を宣言し、 //初期化されていない数値型変数の値 0 を //返します NumberVar x; //2 番目の式。この式は、x に値 30 を代入し、 //30 を返します x:=30
上の式に最初の式がなかったとすると、上の式はエラーになります。それは、2 番目の式が数値型の変数 x を参照しており、x が宣言されないと、プログラムが x を含む式を理解できないからです。
一般に、前の式の結果を後の式の結果に影響させるには、変数を使用します。「変数」を参照してください。