作業をしていて、初めて見て驚いたのでメモ。
例えば、1から10の平均値を求める場合、普通に考えると以下のようなコードを書くと思います。
def average1to10 average = 0.0 (1..10).each do |num| average += num.to_f / 10 end return average end
これをinjectを使って書くと、以下のように多少省略してかけます。average = 0.0の部分をinjectに渡して、eachブロックのブロック変数の一つ目averageにそれが保持されています。
def average1to10 (1..10).inject(0.0) do |average, num| average += num.to_f / 10 end end
参考:ruby の inject をわかりやすく説明してみる - Moderation is a fatal thing. Nothing succeeds like excess.