こんにちは!システム部の徳田です。
前回はDRYなコードを書くために、sendメソッドの紹介を・・・といったのですが、ちょっとその前にもっと基本的なメソッドの紹介をさせていただきます。
inject
これは、rubyの基本的なメソッドです。
1~5の合計を求めるコードを書くとしたら、
eachを用いることにより下記のように書けます。
result = 0
(1..5).each {|v| result += v }
p result
これでも十分DRYだと思っていたのですが、injectメソッドを用いることによりさらにDRYに書けます。
p (1..5).inject(0) {|result, item| result + item }
3行が1行になりましたね。すごく便利なメソッドです。
ちなみに、~.inject(0)の0は、result = 0と同じことを示しています。
0で初期化をするという意味です。
また上記のinjectメソッドはRubyのメソッドですが、Railsのsumメソッドを使用することもできます。
p (1..5).sum
すごいすっきりしますね~。用途によっては使い得ない場合もありますが、知っておいて損はないメソッドですね。
ここで、RubyとRailsでそれぞれメソッドを紹介させていただきましたが、先日上司にごっちゃにならないように!とアドバイスを頂きました。
便利なメソッドはどんどん覚えていったほうがいいのですが、使い方と同時にRailsのメソッドなのか、Rubyのメソッドなのか。。きちんと理解して使用することが大切のようです。





