lambda と& 演算子でブロック部分を分離する
h = Hash.new do |hash,key| hash[key] = key.upcase end p h[:foo] # => :FOO # ------------------- upcase = lambda { |hash, key| hash[key] = key.upcase } h = Hash.new(&upcase) p h[:bar] # => :BAR