inject

http://d.hatena.ne.jp/nazoking/20070217#1171687914

[1,2,3,4,5].inject({}){|hash,item| hash.merge!({item => item}) }
  #=> {5=>5, 1=>1, 2=>2, 3=>3, 4=>4}

[1,2,3,4,5].inject({}){|hash,item| hash[item] = item; hash }
  #=> {5=>5, 1=>1, 2=>2, 3=>3, 4=>4}

とかそのままでも書けるからいいと思ってしまう人。やっぱりメソッドを定義してるのは効率の問題ですかね。でもそこを気にするならそもそもinject使わない方がパフォーマンスは良くなることが多いしなぁ。

ということで個人的には好きですがコードがぱっと見分かりづらくなる、大抵GCがらみで処理が遅くなるとかの理由でinjectはあまり書かないように気をつけていたりします。injectを使うようなパターンにばっちりハマってるときはそれでも使いますけどね。