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