On Oct 13, 8:02 pm, dbl... / wobblini.net wrote:
> On Sat, 14 Oct 2006, clintpachl wrote:
> > class Test
> >  def x
> >    @x + '_instance'
> >  end
>
> >  def x=(v)
> >    @x = v
> >    self.x  # also tried `x'
> >  end
> > end
>
> > t = Test.new
> > puts t.x=('test_x')
> >  => test_x
> > puts t.x
> >  => test_x_instance
>
> > Why doesn't the first puts output 'test_x_instance'? I would think that
> > the self.x call in the writer would call the reader.This just came up today on IRC.  I'd forgotten about it, but was
> reminded.
>
> The writer method allows you to use the assignment-like syntax:
>
>    t.x = value
>
> Since the goal of this is to make the method call look and feel more
> assignment-like, and assignments return their right-hand side, the
> writer-method calls also return their right-hand side, rather than the
> last value in the method.
>
> > How can one call the reader from the writer method?
>
> You are calling the reader, but the magic rhs value overrides it.  I
> haven't found any way to circumvent it.

David, you are right on. Now that I think about it, Ruby does the
natural thing. I was just experimenting and thought it was weird that
my return value was not returning. I guess I needed to step outside the
box.

-pachl