演算子
이 콘텐츠는 아직 번역되지 않았습니다.
Sobakasu では算術、比較、論理演算、代入などに演算子を使用します。
複数の演算子を括弧なしで続けた場合、優先順位の高い演算子から先にまとまります。次の表では、数字が大きいほど優先順位が高くなります。
| 優先順位 | 演算子 | 種類 |
|---|---|---|
| 12 | +x -x !x ~x |
単項演算 |
| 11 | * / % |
乗算・除算・剰余 |
| 10 | + - |
加算・減算 |
| 9 | << >> |
ビットシフト |
| 8 | < <= > >= |
大小比較 |
| 7 | == != |
等値比較 |
| 6 | & |
ビット AND |
| 5 | ^ |
ビット XOR |
| 4 | | |
ビット OR |
| 3 | && |
論理 AND |
| 2 | || |
論理 OR |
| 1 | = += -= *= /= %= &= |= ^= <<= >>= |
代入 |
たとえば、
let result = a + b * c;は a + (b * c) と同じ意味です。
同じ優先順位の演算子が続いたときに、どちら側からまとまるかを結合規則と呼びます。
代入演算子は右からまとまります。
x = y = 1;これは x = (y = 1) と同じ意味です。
その他の二項演算子は左からまとまります。
&& と || の短絡評価
Section titled “&& と || の短絡評価”&& と || は短絡評価を行います。短絡評価とは、左辺だけで結果が確定した場合に右辺を評価しない動作です。
a && b では、まず a を評価します。a が false なら結果はその時点で false となり、b は評価されません。
a || b では、まず a を評価します。a が true なら結果はその時点で true となり、b は評価されません。
このため、右辺に関数呼び出しや値の変更がある場合、その処理が実行されないことがあります。
型による制約
Section titled “型による制約”演算子が存在していても、すべての型の組み合わせで使えるわけではありません。
たとえば + は加算に対応している型でだけ使用できます。対応していない型同士に演算子を使うとコンパイルエラーになります。
演算子を定義する関数
Section titled “演算子を定義する関数”function 宣言では、演算子を関数名として定義できます。標準ライブラリや型の implementation は、この仕組みを使って各型に対する演算子の意味を提供します。
通常の利用側コードでは、これらを a + b のような演算子式として使用します。