pachl
10/14/2006 9:35:00 AM
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