--0016e64b0448e432ac0477e1221b
Content-Type: text/plain; charset=ISO-8859-1

On Sun, Nov 8, 2009 at 12:20 PM, Seebs <usenet-nospam / seebs.net> wrote:

> I don't think that gives the right semantics in many cases.  It's also
> not clear that rebinding works:
>
>        array_example.length++
>
> What should this do?
>

Well, this is a very interesting question, as I discovered something about
Ruby I didn't know from this...

Say we have:

class Foo
  attr_reader :bar

  def initialize
    @bar  
  end
end

f  oo.new
f.bar + 

What do you think the value of a subsequent call to f.bar will be?

I was surprised to discover that it indeed 1.  Somehow + s mutating the
ivar through a supposed "attr_reader" even though there is no corresponding
bar ethod.  In that case + ppears to be frobbing the ivar directly.

Very strange.  Even worse:

class Foo
  def initialize
    @bar  
  end

  def bar
    @bar + 1
  end
end

f  oo.new
f.bar + 

Now what do you think the value of a subsequent call to f.bar will be?

Indeed, it would be 3!

I cannot begin to answer this question because Ruby is doing strange and
unexpected things here, at least from my perspective...

-- 
Tony Arcieri
Medioh/Nagravision

--0016e64b0448e432ac0477e1221b--