From: dblack@... Date: 2006-10-14T12:02:45+09:00 Subject: Re: Calling a reader from a writer Hi -- 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 -- David A. Black | dblack@wobblini.net Author of "Ruby for Rails" [1] | Ruby/Rails training & consultancy [3] DABlog (DAB's Weblog) [2] | Co-director, Ruby Central, Inc. [4] [1] http://www.manning.com/black | [3] http://www.rubypowerandlight.com [2] http://dablog.rubypal.com | [4] http://www.rubycentral.org