Riceにおける式
式
式はインスタンスのアドレスを返す要素である。式と演算子の組み合わせは新たな式を構成する。
int i = 45;
右辺のリテラルは45という値を持つint型のインスタンスのアドレスを返す式である。
int j = i + 55;
右辺の算術式は100という値を持つint型のインスタンスのアドレスを返す式である。この算術式は変数参照とリテラル式を加算演算子で結合してできている。
演算子
演算子は実行する演算を指定する記号である。
一覧と優先順位
式に複数の演算子が含まれる場合、式は演算子の優先順位により評価順が決定される。同一の優先順位を持つ演算子が並ぶ場合は、演算子の結合規則により評価順が決定される。
演算子の一覧と優先順位を示す。数字が小さいほど優先順位が高い。
1 | ||
() | x(y) | メソッド呼び出し演算子 |
new | new int() | new演算子 |
this | this | this演算子 |
[] | x[y] | インデクサー演算子 |
2 | ||
. | x.y | dot演算子 |
++ | x++ | 後置++演算子 |
-- | x-- | 後置--演算子 |
3 | ||
+ | +x | 単項+演算子 |
- | -x | 単項-演算子 |
! | !x | 論理否定演算子 |
++ | ++x | 前置++演算子 |
-- | --x | 前置--演算子 |
4 | ||
* | x * y | 乗算演算子 |
/ | x / y | 除算演算子 |
% | x % y | 剰余演算子 |
5 | ||
+ | x + y | 加算演算子 |
- | x - y | 減算演算子 |
6 | ||
< | x < y | 小なり演算子 |
<= | x <= y | 小なりイコール演算子 |
> | x > y | 大なり演算子 |
>= | x >= y | 大なりイコール演算子 |
7 | ||
== | x == y | 値等価演算子 |
!= | x != y | 値非等価演算子 |
$$ | x $$ y | 参照等価演算子 |
!$ | x !$ y | 参照非等価演算子 |
8 | ||
& | x & y | 論理AND演算子 |
9 | ||
| | x | y | 論理OR演算子 |
評価順序の変更
括弧によって括られた式は、優先的に評価される。
メソッド呼び出し演算子
メソッド名と引数で指定されたコードを実行する。引数は括弧の中の、カンマで区切られたゼロ個以上の式である。それは実行開始時にメソッドに渡される。
new演算子
クラス名と引数で指定されたフィッタを実行して、新しいインスタンスのアドレスを返す。引数は括弧の中の、カンマで区切られたゼロ個以上の式である。それは実行開始時にフィッタに渡される。
this演算子
this演算子は、クラスの現在のインスタンスを参照する。
インデクサー演算子
list クラスのアイテムにアクセスする。左辺の式の返すインスタンスは、list でなければならない。[] の間の式が返すインスタンスは、int でなければならない。
演算子の左辺の参照する list クラスのインスタンスから、[] の間の式によって決定されるアイテムのアドレスを返す。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
dot演算子
dot演算子の左辺の式の返すインスタンスのメンバへのアクセスを提供する。
後置++演算子
演算子の左辺の式と同じ値を持つ新しいインスタンスのアドレスを返し、左辺の式の値をインクリメントする。左辺の式の返すインスタンスは、int,long,realでなければならない。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
後置--演算子
演算子の左辺の式と同じ値を持つ新しいインスタンスのアドレスを返し、左辺の式の値をデクリメントする。左辺の式の返すインスタンスは、int,long,realでなければならない。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
単項+演算子
単項+演算子は、同じ値を持つ新しいインスタンスのアドレスを返す。右辺の式の返すインスタンスの型は、int,long,realでなければならない。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
単項-演算子
単項-演算子は、符号が反転した値を持つ新しいインスタンスのアドレスを返す。右辺の式の返すインスタンスの型は、int,long,realでなければならない。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
論理否定演算子
論理否定演算子は、反転したブール値を持つ新しいインスタンスのアドレスを返します。右辺の式の返すインスタンスの型は、boolでなければならない。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
前置++演算子
演算子の右辺の式の値をインクリメントして、その値を持つ新しいインスタンスのアドレスを返す。右辺の式の返すインスタンスは、int,long,realでなければならない。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
前置--演算子
演算子の右辺の式の値をデクリメントして、その値を持つ新しいインスタンスのアドレスを返す。右辺の式の返すインスタンスは、int,long,realでなければならない。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
算術演算子
二項演算子 "*/%+-" を算術演算子と呼ぶ。算術演算子の両辺の型はint,long,real型のどれかでなければならない。
例外的に、暗黙の型変換が算術演算で行われる。すなわち、int,long,real型は、算術演算において混在させることができる。
演算子の結果の型は被演算数に依存する。被演算数の中にreal型があれば、結果はreal型である。real型が無く、long型があれば、結果はlong型である。それ以外の結果はint型である。
乗算演算子
乗算演算子は、オペランドの値を乗算した値を持つ新しいインスタンスのアドレスを返す。演算子の結果の値が結果の型の範囲を越えるときは、例外がスローされる。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
除算演算子
除算演算子は、オペランドの値を除算した値を持つ新しいインスタンスのアドレスを返す。演算子の結果の値が結果の型の範囲を越えるときは、例外がスローされる。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
剰余演算子
剰余演算子は、オペランドの値を除算した余りの値を持つ新しいインスタンスのアドレスを返す。演算子の結果の値が結果の型の範囲を越えるときは、例外がスローされる。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
加算演算子
加算演算子は、オペランドの値を加算した値を持つ新しいインスタンスのアドレスを返す。演算子の結果の値が結果の型の範囲を越えるときは、例外がスローされる。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
減算演算子
減算演算子は、オペランドの値を減算した値を持つ新しいインスタンスのアドレスを返す。演算子の結果の値が結果の型の範囲を越えるときは、例外がスローされる。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
連結演算子
両辺のオペランドの型がstringのとき、二項演算子+を連結演算子と呼ぶ。連結演算子は、オペランドを連結したstring型の新しいインスタンスのアドレスを返す。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
関係演算子
二項演算子"<,<=,>,>="を関係演算子と呼ぶ。関係演算子のオペランドの型は、intかlongかrealでなければならない。これらは、関係演算において混在させることができる。演算の結果の型は、boolである。
小なり演算子
演算子のオペランドの左辺が右辺より小さいときにtrueを、それ以外はfalseを返す。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
小なりイコール演算子
演算子のオペランドの左辺が右辺より小さいか等しいときにtrueを、それ以外はfalseを返す。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
大なり演算子
演算子のオペランドの左辺が右辺より大きいときにtrueを、それ以外はfalseを返す。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
大なりイコール演算子
演算子のオペランドの左辺が右辺より大きいか等しいときにtrueを、それ以外はfalseを返す。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
値比較演算子
二項演算子 "==,!=" を値比較演算子と呼ぶ。値比較演算子のオペランドの型がstringかboolのときは、左右のオペランドの型は同じでなければならない。オペランドの型がintかlongかrealのときは、それらをの値比較演算において混在させることができる。演算の結果の型は、boolである。
値等価演算子
演算子の左側のオペランドの値が右側と同じである場合はtrueを返す。それ以外の場合はfalseを返す。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
値非等価演算子
演算子の左側のオペランドの値が右側と異なる場合はtrueを返す。それ以外の場合はfalseを返す。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
参照比較演算子
二項演算子 "$$,!$" を参照比較演算子と呼ぶ。オペランドの型に制限はない。演算の結果の型は、boolである。
参照等価演算子
演算子の左側のオペランドが右側と同じインスタンスを参照している場合はtrueを返す。それ以外の場合はfalseを返す。
参照非等価演算子
演算子の左側のオペランドが右側と同じインスタンスを参照していない場合はtrueを返す。それ以外の場合はfalseを返す。
論理演算子
二項演算子 "&,|" を論理演算子と呼ぶ。論理演算子のオペランドの型はboolでなければならない。演算の結果の型は、boolである。
論理AND演算子
演算子の両方のオペランドが真のときに真を、それ以外は偽を返す。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。
論理OR演算子
演算子のどちらかのオペランドが真のときに真を、それ以外は偽を返す。
オペランドが proxy クラスを返した場合は proxy の実体が使用される。