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")} #後略
って書けるしね。