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を使うようなパターンにばっちりハマってるときはそれでも使いますけどね。