>From: "Aristarkh A Zagorodnikov" <xm / w3d.ru> >Reply-To: ruby-talk / ruby-lang.org >To: ruby-talk / ruby-lang.org (ruby-talk ML), <ruby-talk / netlab.co.jp> >Subject: [ruby-talk:10842] Possible bug in Hash implementation >Date: Wed, 14 Feb 2001 23:52:56 +0900 > > > Hello ! > > First, I want to excuse - because this may be not a bug in ruby, but a bug >in my DNA ;) > I tried following on: 1.6.2/i686-linux, 1.6.2 stable-snapshot/i686-linux, >1.7.0/i686-linux, 1.6.2/i586-win32, 1.7.0/i586-cygwin, 1.7.0/i586-mswin32. > > When $= is set to true (case-insensitive), hash access is ... errrm ... >invalid for textual keys at least. It precisely lists the hash ('print >hash.inspect' prints hash with keys/values), but accessing to hash using >one >of the keys (even value, recieved from each iterator: 'hash.each {|k, v| >print hash[k]}, produces nil. > > Maybe it is the intended behaviour ... but it is at least breaking the >logic ... and I love ruby for logic. > ><code> >#!/usr/local/bin/ruby > >class StoredMethod > attr_accessor :name, :desc > def initialize (name, desc) > @name, @desc = name, desc > end >end > >class StoredClass > attr_accessor :name, :members, :desc > def initialize (name, desc) > @name, @members, @desc = name, {}, desc > end >end > >$classes = {} >$classes['TestClass'] = StoredClass.new 'TestClass', 'TestClass >description' >$classes['TestClass'].members['TestMember']={'name' => 'TestMember', 'desc' >=> 'TestMember description' } > >saved = $= ># comment next line to get valid results >$= = true >$classes.each_value {|cl| > cl.members.each_value {|c| > p c > p c['name'] > } >} >$= = saved ></code> > >Aristarkh A Zagorodnikov, Lead Programmer, W3D Group >http://www.w3d.ru /// xm / w3d.ru /// ICQ UIN 36987938 > I have an inkling of why this might be, but I'll leave that to someone more sure of it (well, I think it has to do with the context in which you create the hash, and that which you access it). However, If you move the $= assignment to the line just above $classes = {}, it works. Incidentally, you don't appear to need the global vars, although it's difficult to be sure as I don't know if this is the complete program, etc. Just something to think about. Mike Wilson Unix Administrator http://ruby.weblogs.com _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com