Meinrad Recheis
6/7/2007 3:39:00 PM
On 6/6/07, Robert Klemme <shortcutter@googlemail.com> wrote:
> On 06.06.2007 17:10, Meinrad Recheis wrote:
> > irb(main):001:0> VERSION
> > => "1.8.5"
> > irb(main):002:0> o=Object.new
> > => #<Object:0x2c1c8f0>
> > irb(main):003:0> ObjectSpace._id2ref 0x2c1c8f0
> > RangeError: 0x2c1c8f0 is not id value
> > from (irb):3:in `_id2ref'
> > from (irb):3
> > irb(main):004:0> ObjectSpace._id2ref 0x2c1c8f0/2
> > => #<Object:0x2c1c8f0>
> > irb(main):005:0>
> >
> > I think that is pretty confusing. I am sure there is a good reason for
> > this. But, don't you think it'd be better to display the real
> > object_id instead of the doubled value?
>
> The output of #inspect is not meant to give you any means to get at the
> original object although it may seem so at times. Having said that,
> #object_id and #inspect are completely unrelated and it's just an
> implementation artifact that some classes actually return something that
> resembles the object id.
>
> As far as I remember this list you are the first one that mentions this.
> So it's probably not that big an issue (at least not as confusing as
> "singleton class" :-))
>
> Kind regards
>
> robert
>
>
Robert,
Thanks for your answer. I came across it while debugging a running
application via an eval console. It's not really a problem because I
know that I need to divide the displayed id by 2 to get the object. I
posted it just because ruby didn't work as I expected it to ... which
is completely against the principles of the language.
cheers,
-- henon