Ruby で単項演算子を . 演算子で呼び出す

Ruby では単項演算子 !+ などをメソッドとして再定義する事ができます。

class X
  # ! はそのまま ! という名前のメソッドとして定義する
  def !
    "X#!"
  end

  # + は二項演算子と区別するために +@ と書く
  def +@
    "X#+@"
  end
end

x = X.new
p !x      # => "X#!"
p +x      # => "X#+@"

また、 !+@ はメソッドなので . 演算子で呼び出すこともできます。

# . 演算子で呼び出す
p x.!      # => "X#!"
p x.+@     # => "X#+@"

単好演算子 + の場合は .+@ っていう名前で呼び出せるんですね。知らなかった。