rubyの繰り返し処理として有名なのが、eachメソッドですが、必ずしもeachが最善という訳ではなかったりします。
あるパターンの時は、違うメソッドを使った方が簡略化して、実装できる場合があります。
今回は、パターン別で、簡略化する書き方をご紹介します。
すでにある配列から、要素を変化させた新たな配列を作成する時
mapメソッドを使っていきます。
演算子を使っての変化
# eachの場合list=(1..5).to_alist_double=[]list.eachdo|i|list_doubule<<i*2endplist_double# [2, 4, 6, 8, 10]# mapの場合list=(1..5).to_alist_double=list.map{|i|i*2}plist_double# [2, 4, 6, 8, 10]インスタンスメソッドを使っての変化
# eachの場合array=["a","b","c"]array_up=[]array.eachdo|i|array_up<<i.upcaseendparray_up# ["A", "B", "C"]# mapの場合array=["a","b","c"]array_up=array.map(&:upcase)parray_up# ["A", "B", "C"].map{ |i| i.upcase }をさらに省略させている
配列の要素(数字)の合計を求める時
inject(初期値)メソッドを使っていきます。
# eachの場合list=(1..5).to_asum=0list.eachdo|i|sum+=iendpsum# 15# injectの場合list=(1..5).to_asum=list.inject(0){|i,j|i+=j}psum# 15