今度は演算子について。
演算子は、+だとか-だとか*だとか色々あるけれど、全部を列挙するとこれくらいになる。演算子の優先度は表の上にあるほうが高くなる。
| 演算子 | 意味 |
| :: | スコープ ModuleName::ClassNameのように使う |
| [] | インデックス array[0]のように使う |
| ** | 累乗 2 ** 3 # 8になる |
| +, -, !, ~ | 単項演算子 |
| *, /, % | 乗算,割り算,剰余 |
| +, - | 足し算, 引き算 |
| <<, >> | 論理シフトとか |
| & | ビットごとのAND |
| |, ^ | ビットごとのOR, XOR |
| >, >=, <, <= | 比較 |
| ==, ===, <=>, !=, =~, !~ | 等価, 不等など |
| && | 論理AND |
| || | 論理OR |
| .., ... | 範囲演算子 |
| = (含む+=, -=, *= ...) | 代入演算子 |
| A ? B : C | 三項演算子 |
| not | 論理否定 |
| and, or | 論理AND, OR |
今までJavaやC++とかC#をやってきて見慣れないものもいくつかあるものの、大体見覚えのある演算子が並んでいる。
Ruby以外ではあまり見たこと無い演算子として、===, <=>がある。
===はcase文での比較のときにつかわれる演算子らしい。==ではないんだね。これによって正規表現と文字列の比較とかもcase文でうまいこといけるようになってるみたいだ。
<=>演算子は、左辺と右辺を比較して、等しかったら0, 左辺が小さかったら-1, 左辺が大きかったら1を返す演算子のようだ。
puts 1 <=> 2 # -1
puts 2 <=> 1 # 1
puts 1 <=> 1 # 0
ほかに珍しいものとしては、and or notなどがある。論理ANDとかという意味では珍しくないけど、andとorの優先順位が同じだったり、代入演算子と比べて優先度が低かったりと特徴的だ。
ここらへんは、どういったことがおきるのかTHREE=ONEさんのブログの以下の記事で書かれてる。
Ruby の論理演算子
演算子だけをとってみても奥が深そうだ。
因みに、演算子のうちのいくつかはメソッドとして呼び出せるみたいだ。
例えば+とかは、変数.+(引数)といった形で書いても動く。
NetBeans6.5のRubyエディタでは、演算子をメソッドとして呼び出すような補間はCtrl+Spaceをしても出てこなかった。
コード補間のリストには+とか-は出てこなかった
まぁ実質問題はない!