1

私はこれらのハッシュを持っています:

{"a" => 1, "b" => 2, "c" => 3, "k" => 14}
{"b" => 51, "c" => 2, "d"  => 8}

操作後の結果が次のようになるように、コードを記述する必要があります。

{"a" => 1, "b" => 51, "c" => 2, "k" => 14}

私は試した:

h1.each do |h, j|
  h2.each do |hh, jj|
    if h == hh
      j = jj
    end
  end
end

しかし、うまくいきません。また、これは醜いコードだと思います。

2 つのハッシュを比較し、2 番目のキーが最初のキーと同じ場合は、最初のハッシュ値を 2 番目のハッシュ値に変更する必要があります。

4

1 に答える 1

1

のエントリを繰り返し処理し、対応するエントリが既に存在する場合h2にのみ更新します。h1

h2.each { |k,v| h1[k]=v if h1.include?(k) }
h1 # => {"a"=>1, "b"=>51, "c"=>2, "k"=>14 }

また、上記のようにエントリを更新し、新しいエントリを追加する場合は、次のh2Hash#merge!メソッドを使用できます。

h1.merge!(h2)
h1 # => {"a"=>1, "b"=>51, "c"=>2, "k"=>14, "d"=>8}
于 2013-09-20T16:42:01.913 に答える