T. Onoma wrote:
> As far as I know -@ and +@ are the only unary operators that can be defined.

One more, at least:

irb(main):001:0> class Foo; def ~@; "FOO"; end; end
=> nil
irb(main):002:0> ~Foo.new
=> "FOO"

I like this one because ~ is less suggestive than + and -, so it could 
be used for a wider variety of concepts.