a=Array(1..10)
b=Hash.new
c=Array.new
a.map do |e|
b[:id]=e
c.push b
end
p c
结果却是
[{:id=>10}, {:id=>10}, {:id=>10}, {:id=>10}, {:id=>10}, {:id=>10}, {:id=>10}, {:id=>10}, {:id=>10}, {:id=>10}]
求解
1
dalang 2015-10-21 22:24:24 +08:00 1
因为 b 是一个 hash 对象,在循环最后,对象 b 对应的值就是 {:id => 10}. c.push b 是把对象 b 在数组中 insert 了 10 次。
如果想要预期的结果,可以把循环改成 ``` a.map do |e| b= Hash.new b[:id]=e c.push b end ``` |