I was trying to learn the operator over-ridding in Ruby. So i used the
below in my IRB.
class Banner < String
def +
?> upcaseend
def -
?> downcaseend
end
=> nilban = Banner.new(“hi”)
=> “hi”+ban
NoMethodError: undefined method[email protected]' 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 [email protected]
upcase
end
def [email protected]
downcase
end
end
=> nilban = 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