r is independent of r[:b]. r[:b] is a hash with a value containing  
another hash/key value.

ie {:b => {:c => 10}} NOT {:b => 10, :c = 10}. If I understand your  
confusion correctly.

irb(main):001:0> def r
irb(main):002:1> @r ||= Hash.new({})
irb(main):003:1> end
=> nil
irb(main):004:0> r[:a]
=> {}
irb(main):005:0> r.empty?
=> true
irb(main):006:0> r[:a] = 1
=> 1
irb(main):007:0> r.empty?
=> false
irb(main):008:0> r[:b][:c] = 10
=> 10
irb(main):009:0> r
=> {:a=>1}
irb(main):010:0> r[:b]
=> {:c=>10}
irb(main):011:0> (r[:b])[:c]
=> 10
irb(main):012:0> r[:a]
=> 1
irb(main):013:0> r.size
=> 1
irb(main):014:0> r[:b].size
=> 1
irb(main):015:0> r[:b][:d] = 300000
=> 300000
irb(main):016:0> r[:b].size
=> 2
irb(main):018:0> r
=> {:a=>1}
irb(main):019:0> r[:b]
=> {:d=>300000, :c=>10}

Or did I completely miss your point?

Mitch

On Aug 28, 2005, at 11:16 PM, Trans wrote:

> irb(main):006:0> def r
> irb(main):007:1>   @r ||= Hash.new({})
> irb(main):008:1> end
> => nil
> irb(main):009:0> r[:a]
> => {}
> irb(main):010:0> r[:b][:c] = 10
> => 10
> irb(main):011:0> r
> => {}
> irb(main):012:0> r[:b]
> => {:c=>10}
> irb(main):013:0>
>
> Please explain how r is empty but r[:b] exists.  Thank You.
>
> T.
>
>
>