Enumerable#each_with_object が嫌いだ。
もちろん動作自体は非常に有益だと思っているので、名前が嫌いなんだなーという結論になってしまうんだけど。
名前が長いというのはまぁそうなんだけど、その事自体は大した問題じゃない。
動作と名前が一致しているなら、後から良い短い名前が見つかった時aliasつければ別に困らない。
このメソッドが嫌いなのは、eachから始まっているところだ。
他のeach[_foo]系はブロック付の時にself返すのに、これだけ引数を返す。
これは類推できない、なので嫌だ。
代案の一つとして、こういうのはどうか
module Enumerable
alias_method :for, :each_with_object
end
class Enumerator
alias_method :for, :with_object
end
[1, 2, 3].for([]){|n, a|a << n * 2} #=> [2, 4, 6]
[1, 2, 3].each.for([]){|n, a|a << n * 2} #=> [2, 4, 6]
Kernelにも付けてtapと対にしようかなと思ったけど、特に意味なさそうなのでやめといた。
長いという観点からの変更提案はすでにあるっぽい。
http://melborne.github.com/2012/07/03/feature-request-enumerable-with/
http://bugs.ruby-lang.org/issues/6687