ruby - What do `def +@` and `def -@` mean? -
in haskell-like comprehensions implementation in ruby there's code i've never seen in ruby: class array def +@ # implementation end def -@ # implementation end end what def +@ , def -@ mean? find (semi-)official informations them? they unary + , - methods. called when write -object or +object . syntax +x , example, replaced x.+@ . consider this: class foo def +(other_foo) puts 'binary +' end def +@ puts 'unary +' end end f = foo.new g = foo.new + f # unary + f + g # binary + f + (+ g) # unary + # binary + another less contrived example: class array def -@ map(&:-@) end end - [1, 2, -3] # => [-1, -2, 3] they mentioned here , there's article how define them here .