inject2

なんか嫌われ者っぽい injectですが

module Enumerable
  def inject2(r)
    self.each{|v| yield r,v}
    r
  end
end

こんな定義をしてやると、

[1,2,3,4,5].inject2({}){|result, item| result[item]= item }
=> {5=>"5", 1=>"1", 2=>"2", 3=>"3", 4=>"4"}

こんな風に使えて便利。配列をハッシュにしたい時って色々ある。
こういう使い方をするときは、第一引数は大抵ハッシュなので、デフォルト引数にハッシュを指定しておいてもいいかも。
http://d.hatena.ne.jp/nazoking/20070213#1171357115 のも

class CGI
  # HTMLエンティティーの定義
  HtmlEntity = Hash[ *%w(nbsp 160 iexcl 161 cent 162 pound 163 curren 164 中略 
    )].inject2({}){|r,v| r[v[0]] = [v[1].to_i].pack("U")}
 #後略

って書けるしね。