Ruby で単項演算子を再定義する

Ruby で単項演算子+``- を再定義する場合、メソッド名を +@``-@ にすることで再定義する事ができます。

class X
    def initialize value
        @value = value
    end

    # 単項演算子 - を再定義
    def -@
        -@value
    end
end

x = X.new -10
-x
# => 10