式は、結果を評価するコードの最小単位です。 Verse における全てのものが式です。つまり全てを評価して 値 が得られます。
たとえば、Verse の if ... else 式では、
式ブロックの内容に応じて値を評価します。 次のコードは、MyNumber が 5 より大きいかどうかに応じて、"Big!" か "Small!" のいずれかが入っている string 値に評価します。
if (MyNumber > 5):
“Big!”
else
“Small!”つまり、result を保存してそれを入力として使うのではなく、if ... else を直接関数への入力として使用できるということです。
この例はシンプルですが、状況によりさらに強力なものになる場合があります。 たとえば、ループ は値の配列を評価されるため、既存の配列を基に新しい配列をすばやく作成することができます。
次のコードでは、MyArray には NumberArray から 5 未満の全ての値が含まれます。
MyArray : []int = for(Number := NumberArray, Number < 5):
Number失敗する可能性がある式
失敗する可能性がある式 とは、成功して値を生み出す場合もあれば、失敗して値を返さない場合もある式です。 式が失敗した場合に起きる内容はコンテキストによって決まるため、失敗する可能性がある式は 失敗コンテキスト でのみ実行できます。
失敗する可能性がある式の例として、配列へのインデックス処理 (無効なインデックスでは失敗するため) や、演算子の使用 (2 つの値を比較するなど) があります。 Verse において失敗する可能性がある式については、「失敗」を参照してください。
Verse における式のリスト
次のテーブルでは、Verse における多様な式について説明します。 それぞれの式の詳細については、そのリンクを参照してください。
| 式 | 説明 | 失敗する可能性がある式か? |
|---|---|---|
リテラル | リテラル はコードにおける固定値 (数値や文字など) です。 Verse では、リテラルに次の型があります。
| |
関数呼び出し | 関数呼び出しは式であり、 | 関数呼び出しが |
比較 | 比較式は、比較式は以下の比較演算子のいずれかを使用して、2 つの内容を比較します。
詳細は、「演算子」を参照してください。 | はい |
割り当て | 代入式は、値を可変な場所に格納します。例えば、定数の初期化や変数の値を変更する場合です。 詳細は、「変数と定数」を参照してください。 | |
Math | 数式演算では次の演算子を使用して計算を実行します。
これらすべての演算子にはポインタとともに使用できる代入バリアントもあります。 詳細は、「演算子」を参照してください。 | 整数での除算の場合のみ。 |
決定 | 判定式は、 | はい |
クエリ | クエリ式は演算子 | はい |
クラスと構造体のインスタンス化 | ||
制御フロー | 制御フローは、コンピュータが命令を実行する順序です。
詳細は、「制御フロー」を参照してください。 | |
アレイ | 配列は、同じ型の要素を格納できるコンテナです。 配列の要素は配列に挿入した順番で配置され、それらの要素にはインデックスと呼ばれる配列内の位置に基づいてアクセスできます。 詳細は、「配列」を参照してください。 | 配列でインデックス処理するときのみ。 |
タプル | タプルは、複数の型の要素を格納できるコンテナです。 タプルの要素は、タプルに挿入した順番で配置され、それらの要素には、インデックスというタプル内の位置に基づいてアクセスできます。 詳細は、「タプル」を参照してください。 | |
マップ | マップは、別の値に関連付けられた値「キー/値のペア」を格納できるコンテナです。 キー / 値のペアは、キーの型が比較可能な限り、任意の型を組み合わせることができます。 マップの要素はマップにキー/値のペアを挿入した順になり、各要素には一意のキーでアクセスできます。 詳細は、「マップ」を参照してください。 | |
オプション | オプションとは、値が 1 つまたは値がない型を含むコンテナです。 詳細は、「オプション」を参照してください。 | |
範囲 | 範囲式は、指定した 2 つの値の間の全ての数値を含みます。 |