PerlerのRuby日記

Rubyとか

単項演算子メモ

メモ。
Rubyには単項演算子が3つある。+と-と~だ。
ただし、これらは二項演算子と明確に区別されるので、オーバーライドするときには記号に@をつけて定義する。

class Fixnum
  def -@
    -2 * self
  end
end

i = 5
puts -i #=> -10

ちなみに、左辺に値が存在しない場合はいつまでも単項演算子なので、

i = 5
puts --i #=> 5
puts ++i #=> 5
puts -------------------i #=> 5
puts +++++++++++++++++++i #=> 5
puts -+-+-+-+-+-+-+-+-+-i #=> 5

なんてこともできる。なんだこれ。

なんか既視感あったと思ったら、これだった。

参考:
http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fdef.html#operator
http://docs.ruby-lang.org/ja/2.1.0/doc/symref.html