1

Rubyコードは:</p>

    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

4

2 に答える 2

2

a << hあなたがしなければならない後h = {}。これは、以前の値を上書きしないように、新しいオブジェクトをhに割り当てているためです。

于 2012-06-28T03:00:32.093 に答える
0

【補足回答】関数型プログラミングの原理はご存じですか?

(0..1).map { |n| Hash[("a".."c").map { |c| [c, "#{c}#{n}"] }] }
#=> {"a"=>"a0", "b"=>"b0", "c"=>"c0"}, {"a"=>"a1", "b"=>"b1", "c"=>"c1"}]
于 2012-06-28T12:19:58.943 に答える