2012-05-21 3 views
3

다음 해시를 병합하고 싶습니다.루비에서 복잡한 해시를 병합합니다.

h1 = {"201201" => {:received => 2}, "201202" => {:received => 4 }} 
h2 = {"201201" => {:closed => 1}, "201202" => {:closed => 1 }} 

특히, 내 예상 된 결과는 다음과 같습니다 불행하게도

h = h1.merge(h2){|key, first, second| {first , second} } 

, 어느 쪽도 아니 나를 위해 벌금을 해결 듯 : 나는 등 모든 방법을 시도하지 않은

h1 = {"201201" => {:received => 2, :closed => 1}, "201202" => {:received => 4, :closed => 1 }} 

. 어떤 조언이 정말 감사하겠습니다.

답변

6

이 당신을 위해 작동합니다 :

h = h1.merge(h2){|key, first, second| first.merge(second)} 
+2

아, ['해시 #의 merge']의 블록 형태 (http://www.ruby-doc.org/core-1.9.3/Hash. html # method-i-merge)는 정말 아름답습니다. – Phrogz

+2

재귀 병합을 원한다면 : m = -> (k, a, b) {a.merge (b, &m) }; h = m [nil, h1, h2]' – Phrogz