Quantcast
Channel: 配列タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 834

【ruby】map, injectを使ってeachを簡略化する

$
0
0

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

Viewing all articles
Browse latest Browse all 834

Trending Articles