Hi Aaron

2011/4/25 Aaron <aaron2ti / gmail.com>:
> see the following codes pls, I wonder if this's a intent or a bug. For methe first line sounds better having same result with the later line
>
>>> [1].inject(Hash.new {[]}){ |result, i| result[:mem] << i;  result}
> => {}
>>> [1].inject(Hash.new {[]}){ |result, i| result[:mem] <<= i; result }
> => {:mem=>[1]}

It's the expected behaviour. See
http://ruby-doc.org/core/classes/Hash.html#M000718.

"If a block is specified, it will be called with the hash object and
the key, and should return the default value. It is the block”Ęs
responsibility to store the value in the hash if required."

[1].inject(Hash.new {|h,k| h[k] = Array.new}){ |result, i|
result[:mem] << i;   result }
 => {:mem=>[1]}

-- 
Roger Braun
rbraun.net | humoralpathologie.de