Добавить в Array Loop
Рубиновый код :
a = []
h = {}
2.times.each do |i|
%w(a b c).each do |x|
h[x] = x + i.to_s
end
a << h
end
результат:
a = [{"c"=>"c1", "b"=>"b1", "a"=>"a1"}, {"c"=>"c1", "b"=>"b1", "a"=>"a1"}]
но я надеюсь, что результат:
a = [{"c"=>"c0", "b"=>"b0", "a"=>"a0"}, {"c"=>"c1", "b"=>"b1", "a"=>"a1"}]
кто может мне помочь.thx
2 ответа
Решение
После a << h
ты должен сделать h = {}
, Это потому, что вы назначаете новый объект h, чтобы он не переопределял предыдущие значения.
[Дополнительный ответ] Вы знакомы с принципами функционального программирования?
(0..1).map { |n| Hash[("a".."c").map { |c| [c, "#{c}#{n}"] }] }
#=> {"a"=>"a0", "b"=>"b0", "c"=>"c0"}, {"a"=>"a1", "b"=>"b1", "c"=>"c1"}]