From: "Kumar R." Date: 2013-03-09T23:07:52+09:00 Subject: Confusion with unary operator overidding I was trying to learn the operator over-ridding in Ruby. So i used the below in my IRB. >> class Banner < String >> def + ?> upcase >> end >> def - ?> downcase >> end >> end => nil >> ban = Banner.new("hi") => "hi" >> +ban NoMethodError: undefined method `+@' for "hi":Banner from (irb):22 from C:/Ruby193/bin/irb:12:in `
' Now after seeing the error in the `IRB` i corrected definition of `+` and `-` as below, which in turn fixed the code. >> class Banner < String >> def +@ >> upcase >> end >> def -@ >> downcase >> end >> end => nil >> ban = Banner.new("hi") => "hi" >> +ban => "HI" But my confusion is with the logical necessity of that `@` operator? Again I tried to over-ride `!` as below: >> class Banner >> def ! >> reverse >> end >> end => nil >> !ban => "ih" >> not ban => "ih" But here I didn't need to use that `@` operator. Can anyone help me to understand why `@` was needed with `+` and `-` but not with `!`? Thanks -- Posted via http://www.ruby-forum.com/.