Actions
Feature #2540
closedHash#contribute
Description
=begin
初めてチケット切ります。不備がございましたらご指摘ください。
現在、Hashにキーと値を設定したいときに、[]=とstoreの2種のメソッドがあります。
しかし、これらのメソッドは更新したselfを返さないため、Hashをマージする(Hash#mergeとは違い、深く検索するマージ)処理を書いたときは、どうしても1行で収まらなくなります
base:マージするハッシュ¶
hash:マージ対象ハッシュ¶
def merge2(base, hash = {})
base.each{|key, value| hash[key] = value.kind_of?(Hash) ? merge(value, hash[key].nil? ? {} : hash[key]) : value }
hash
end
そこで、Hashにキーと値を設定する追加のメソッドとして、Hash#contributeを提案いたします。
機能は、selfを返す以外はHash#storeと同等です。
これを使うときは、injectを使って、1行で済むようになります。
base:マージするハッシュ¶
hash:マージ対象ハッシュ¶
def merge2(base, hash = {})
base.keys.inject(hash){|r, key| r.contribute(key, base[key].kind_of?(Hash) ? merge2(base[key], r[key].nil? ? {} : r[key]) : base[key] }
end
ご検討よろしくお願いいたします。
=end
Actions
Like0
Like0Like0Like0