Jano Svitok
9/20/2006 11:44:00 AM
On 9/20/06, Morton Goldberg <m_goldberg@ameritech.net> wrote:
> On Sep 20, 2006, at 6:32 AM, Hussachai Puripunpinyo wrote:
>
> > Question 1:
> >
> > #IS THIS A BUG
> > class TestBug
> > def test
> > "Hello Bug"
> > end
> > end
> > class FoundBug < TestBug
> > def test
> > super +" ,I found you !" #Notice here
> > end
> > end
> > test = FoundBug.new()
> > puts test.test
> >
> > It blame me that
> > "undefined method `+@' for " ,I found you !":String (NoMethodError)
> > from C:/DOCUME~1/HUSSAC~1/LOCALS~1/Temp/rb1F.tmp:12"
> > Why?
> > This is bug or I miss something?
> >
> > If I replace the line in '#Notice here' to
> >
> > super+" ,I found you !" #With no space between super and my string
> > #OR
> > super + " ,I found you !" #With space both side of '+'
> > #I found that no error
> >
> > Why?
>
> No, I'm afraid it's a feature ;). if you rewrite
>
> > super +" ,I found you !" #Notice here
>
> to
> > super + " ,I found you !" #Notice space after '+'.
>
> it will work. By leaving out the space, you have invoked the unary
> '+' operator. But, of course, you wanted the binary '+' operator. In
> Ruby there are times when spaces and parentheses are critical.
In other words,
super +"whatever" is the same as super(+"whatever") while
super+"whatever" or super + "whatever" is the same as super(*args) + "whatever".
right?