ハッシュをマージする

備忘録目次 - ロバの耳

h1 = Hash[*%w[Apple red Tomato red Papper red]]
h2 = Hash[*%w[Spinach green Celery green Papper green]]
p h1.merge(h2)
#=> {"Celery"=>"green", "Tomato"=>"red", "Spinach"=>"green", "Apple"=>"red", "Papper"=>"green"}


p h1.merge(h2) {|k, v1, v2|
	p [k,v1,v2];
	v1	# つねにh1の値を優先させる
} 
#=> ["Papper", "red", "green"]
#=> {"Celery"=>"green", "Tomato"=>"red", "Spinach"=>"green", "Apple"=>"red", "Papper"=>"red"}

キーがかぶっている場合,merge()の中の値が優先される.ブロック付きで呼び出した場合,どちらのハッシュの値を使うか選択可能.