演算子の定義

リファレンスからのコピペだけど、これさえ知ってればOKかな。
つまり、

  1. Ruby二項演算子は左結合
  2. 単項演算子定義の時、「@」がselfになる(普通のメソッド定義でも使えそうだな。意味ないけど)
  3. '[' と ']' のような対が必要な演算子は、引数が間に入る
  4. '[]=' だけ特殊で、引数の最後が '=' の右に来る

ということか。

# 二項演算子
def +(other)                # obj + other
def -(other)                # obj - other

# 単項プラス/マイナス
def +@                      # +obj
def -@                      # -obj

# 要素代入
def foo=(value)             # obj.foo = value

# [] と []=
def [](key)                 # obj[key]
def []=(key, value)         # obj[key] = value
def []=(key, key2, value)   # obj[key, key2] = value

# バッククォート記法
def `(arg)                  # `arg` または %x(arg)
  • 左結合:式の一番左から処理される。簡単には「一番左側の演算子より右を括弧で囲む」ということ。
    • 例:1+2+3=1+(2+3)
  • 右結合:式の一番右から処理される。簡単には「一番右側の演算子より左を括弧で囲む」ということ。
    • 例:1+2+3=(1+2)+3
  • 優先順位(結合強度):演算子の種類による処理の順序。「*(かけ算)は+(足し算)より先にする」とか。