演算子は Verse プログラミング言語で定義された特殊な関数です。被演算子に対して算術演算などのアクションを実行します。 たとえば、式 1 + 2 では、+ が演算子、1 と 2 の両方が被演算子になります。
Verse では、以下の 3 つの形式の演算子を使用します。
プレフィックス:被演算子が 1 つだけあり、その前に演算子が置かれます。
インフィックス:被演算子が 2 つあり、その間に演算子が置かれます。
ポストフィックス:被演算子が 1 つだけあり、その後に演算子が置かれます。
このページでは、Verse で使用できるすべての演算子、それらの機能、そして他の演算子と組み合わせて使用した場合の評価順について説明します。
すべての演算子と演算子の優先順位のリスト
複数の演算子を同じ式で使用した場合、それらの演算子は優先度が最も高いものから低いものの順に評価されます。 以下の表に Verse に組み込まれたすべての演算子とそれらの優先順位を示します。
| 名前 | 演算子 | 説明 | 演算子の形式 | 演算子の優先順位 | 例 |
|---|---|---|---|---|---|
クエリ |
|
| ポストフィックス | 9 |
|
Not |
|
| プレフィックス | 8 |
|
プラス |
|
| プレフィックス | 8 |
|
マイナス |
|
| プレフィックス | 8 |
|
乗算 |
|
| インフィックス | 7 |
|
ディビジョン |
|
| インフィックス | 7 |
|
加算 |
|
| インフィックス | 6 |
|
減算 |
|
| インフィックス | 6 |
|
加算代入 |
| この演算子を使用すれば、同じ演算で加算と代入を組み合わせて変数の値を更新できます。 詳細については、「数学演算」を参照してください。 | インフィックス | 5 |
|
減算代入 |
| この演算子を使用すると、同じ演算で減算と代入を組み合わせて変数の値を更新できます。 詳細については、「数学演算」を参照してください。 | インフィックス | 5 |
|
乗算代入 |
| この演算子を使用すれば、同じ演算で乗算と代入を組み合わせて変数の値を更新できます。 詳細については、「数学演算」を参照してください。 | インフィックス | 5 |
|
除算代入 |
| この演算子を使用すれば、同じ演算で除算と代入を組み合わせて変数の値を更新できます。ただし、変数が整数の場合を除きます。 詳細については、「数学演算」を参照してください。 | インフィックス | 5 |
|
等号 |
|
| インフィックス | 4 |
|
不等号 |
|
| インフィックス | 4 |
|
未満 |
|
| インフィックス | 4 |
|
以下 |
|
| インフィックス | 4 |
|
大なり |
|
| インフィックス | 4 |
|
以上 |
|
| インフィックス | 4 |
|
& |
|
| インフィックス | 3個 |
|
または |
|
| インフィックス | 2 |
|
変数と定数の初期化 |
| この演算子を使用すれば、定数または変数で値を格納できます。 詳細については、「定数と変数」を参照してください。 | インフィックス | 1個 |
|
変数割り当て |
| この演算子を使用すれば、変数で格納された値を更新できます。 詳細については、「定数と変数」を参照してください。 | インフィックス | 1個 |
|
同じ式に優先順位が同じ演算子が複数ある場合、それらの演算子は左から右の順に評価されます。 たとえば、式 3*2/4 では、演算子 * と / の優先順位が同じであるため、3*2 が最初に評価され、その結果は / 演算子の左側の被演算子になります。
() で式をグループ化することにより、演算子が評価される順序を変更できます。 たとえば、(1+2)*3 と 1+(2*3) の評価結果は同じになりません。 詳細については、「グループ化」を参照してください。
比較
不等値式演算子と等値式演算子を使用する比較式により、成功および失敗フローを制御できます。 判定式は失敗する可能性があるため、比較演算子は if 式といった失敗コンテキストでのみ使用できます。
以下の表に各演算子と演算子がサポートする型を示します。 どの比較演算子でもインフィックス形式が使用されます。
| 演算子 | サポートされるビルトイン型 | 説明 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<> と = はいずれも array、map、tuple、および class の各インスタンスをサポートしますが、制限事項もあります。 array、map、tuple のインスタンスにはサポートされる型のみを含めることができ、class のインスタンスは、少なくとも 1 つの var メンバーが含まれる場合にのみサポートされます。
決定
成功/失敗フローを制御するには、not、and、or 演算子を使った判定式を使用します。 判定式は失敗する可能性があるため、比較演算子は if 式などの失敗コンテキストでのみ使用できます。 判定演算子を使って、成功または失敗を判断するあらゆる式を利用できます。
Not 演算子
not 判定演算子は、式の成否を反転させます。 not 演算子はプレフィックス形式を使用します。
たとえば、expression が失敗した場合は not expression が成功します。 expression が成功すると not expression が失敗し、expression のエフェクトがコミットされることはありません (式が発生しなかったように処理されます)。
たとえば、次のコードが実行された後にも Example には初期値 0 が含まれます。
var Example : int = 0
if (not (set Example = ExampleArray[0])) { … }式が成功するかを確認するために not not expression を使用できますが、その式が実際に実行されないようにする必要があります。
| p 式の結果 | not p 式の結果 | not not p 式の結果 |
|---|---|---|
成功して結果は | 式は失敗し、 | 式は成功しますが、 |
失敗して結果は値なし | 式は成功します。 式の結果は | 式は失敗します。 式の結果は値なしとなります。 |
式を評価する not 演算子の参照は、p によって表されます。
And / Or 演算子
インフィックス形式を使用する and 判断演算子は、両方の被演算子が成功するか、少なくともいずれかの被演算子が失敗した場合に成功する、失敗する可能性がある式です。
or 判断演算子はインフィックス形式を使用し、次のような特徴を持ちます。
最初の被演算子の失敗コンテキストである。
2 つ目の被演算子が失敗する可能性がある場合のみに、失敗する可能性がある式となる。
最初の被演算子が成功した場合、or 演算子では 2 つ目の被演算子の評価をスキップします。
次の表は、and 演算子と or 演算子を使った判定式から導き出される、被演算子の成否のすべての組み合わせを示しています。
| p 式の結果 | q 式の結果 | p and q 式の結果 | p or q 式の結果 |
|---|---|---|---|
成功して結果は | 成功して結果は | 式が成功するので、 | 式は成功し、 |
成功して結果は | 失敗して結果は値なし | 式は失敗し、 | 式は成功し、 |
失敗して結果は値なし | 成功して結果は | 式は失敗し、 | 式は成功し、 |
失敗して結果は値なし | 失敗して結果は値なし | 式は失敗し、 | 式は失敗し、 |
式を評価する and および or 演算子の参照は、p と q で表されています。
Math
数式を使用すると、数値を使って 4 つの基礎的な数学演算 (加算、減算、乗算、除算) を行い、文字列を連結させることができます。 すべての演算子はインフィックス形式を使用しますが、+ と - については、例外として数値のプレフィックスとしても使用できます。
また、set X += 10 のような代入演算子もあります。 これらは演算を実行してから結果を代入するのとほぼ同じ (set X = X + 10) ですが、このケースでは X が 1 度だけ評価されるという点が異なります。 代入演算子の結果は、変数の更新に使用する値となります。
以下の表に各演算子と演算子がサポートする型を示します。
| 演算子 | サポートされるビルトイン型 | 説明 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
| この演算子を使用すれば、同じ演算で加算と代入を組み合わせて変数の値を更新できます。 |
|
| この演算子を使用すると、同じ演算で減算と代入を組み合わせて変数の値を更新できます。 |
|
| この演算子を使用すれば、同じ演算で乗算と代入を組み合わせて変数の値を更新できます。 |
|
| この演算子を使用すれば、同じ演算で除算と代入を組み合わせて変数の値を更新できます。ただし、変数が整数の場合を除きます。 整数除算の詳細については、「int」を参照してください。 |
クエリ
クエリ式は演算子 ?(クエリ) を使用して logic 値が true かどうかをチェックします。 他の場合は、式が失敗します。 ? (クエリ) 演算子ではポストフィックス形式を使用します。
| p 式の結果 | p? 式の結果 |
|---|---|
| 成功して結果は |
| 失敗して結果は値なしになります。 |
式を評価する ? (クエリ) 演算子の参照は、p で表されています。
例:
if (IsMorning?):
Say("Good Morning!")