From: Makoto Cyross Date: 2009-12-31T14:55:50+09:00 Subject: [ruby-dev:39939] [Feature #2540] Hash#contribute チケット #2540 が更新されました。 (by Makoto Cyross) > > そこで、Hashにキーと値を設定する追加のメソッドとして、Hash#contributeを提案いたします。 > > 機能は、selfを返す以外はHash#storeと同等です。 > > 新しいメソッドを追加しなくてもtapを使えば良いと思います。 > > > これを使うときは、injectを使って、1行で済むようになります。 > > injectとの組み合わせならeach_with_objectを使う方が良いと思います。 ご意見を反映してみました。 # base:マージするハッシュ # hash:マージ対象ハッシュ def merge2(base, hash = {}) base.each_with_object(hash){|pair, r| r.tap{|tmp| tmp[pair[0]] = pair[1].kind_of?(Hash) ? merge2(pair[1], r[pair[0]].nil? ? {} : r[pair[0]]) : pair[1] } end 機能的にはこれで十分です。ありがとうございました。 ---------------------------------------- http://redmine.ruby-lang.org/issues/show/2540 ---------------------------------------- http://redmine.ruby-lang.org