From: 中村暁史 Nakamura Akifumi <BXQ04723 / nifty.ne.jp>
Subject: [ruby-list:20948] Re: Hash#update  について
Date: Wed, 23 Feb 2000 03:01:25 +0900

るびきちです。

> updateって一律全部updateしちゃうからupdateっていう
> (日本語になってないぞ俺)ようなきがします。

だよね〜

> #やっぱり名前は大事だ…

うんうん、だけどいい名前を決めるのは難しい。
いい命名規則ってないのかな??

つーことでとりあえずさささ〜って書いてみた。

#!/usr/bin/ruby
=begin
Hash#merge(y){|x,y| ...}
=end

class Hash
  def merge(y)
    y.keys.each do |key|
      if self.key? key then
        self[key] = yield(self[key], y[key])
      else
        self[key] = y[key]
      end
    end
    self
  end
end

if __FILE__ == $0 then
  x = {1=>2, 3=>4, 5=>6}
  y = {1=>5, 3=>2, 10=>10}
  
  p x.merge(y) {|a, b|
    if a >= b then a else b end
  } # => {5=>6, 1=>5, 3=>4, 10=>10}
end

るびきち☆