Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Ruby | Hash | merge

概要

Hash#merge

詳細

Hashに対して別のHashをマージします。
重複するキーが合った場合は、ブロックなしならotherの値が適用され、
ブロック付きの場合はブロックの処理結果が適用されます。

サンプルコード
# encoding: utf-8
require 'tbpgr_utils'

hoge = {
  hoge: :hoge,
  both: :both1,
}
hige = {
  hige: :hige,
  both: :both2,
}

bulk_puts_eval binding, <<-EOS
hoge.merge hige
hoge.merge(hige) {|v, one, other|one.to_s + other.to_s}
EOS
__END__
下記はTbpgrUtils gemの機能
bulk_puts_eval

https://rubygems.org/gems/tbpgr_utils
https://github.com/tbpgr/tbpgr_utils
出力
hoge.merge hige # => {:hoge=>:hoge, :both=>:both2, :hige=>:hige}
hoge.merge(hige) {|v, one, other|one.to_s + other.to_s} # => {:hoge=>:hoge, :both=>"both1both2", :hige=>:hige}