23
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

eachをmapに変換し、コードを簡潔にしよう!

Last updated at Posted at 2018-09-03

#はじめに

はじめまして!
今回はeachをmapに置き換えてコードをより簡潔にしようと思います。
mapってどんなメソッド?って方はこちら
#バージョン
Ruby 2.4.0

#実際にやってみよう
今回は以下のコードを簡潔にしてみようと思います!


numbers = [1,2,3,4,5,6]
str_numbers = []
numbers.each do |n|
  str_numbers << n.to_s
end
p str_numbers

#出力結果
["1", "2", "3", "4", "5", "6"]

#mapを使って簡潔にしてみよう

numbers = [1,2,3,4,5,6]
str_numbers =  numbers.map do |n|
                 n.to_s
               end
p str_numbers
#出力結果
["1", "2", "3", "4", "5", "6"]

#ワンライナーでかいてみよう

do...endの代わりに{}でもブロックが作れるため以下のような書き方ができる。

numbers = [1,2,3,4,5,6]
str_numbers = numbers.map { |n| n.to_s }
p str_numbers

#出力結果
["1", "2", "3", "4", "5", "6"]

ワンライナーで以下のようにも書ける。

numbers = [1,2,3,4,5,6]
str_numbers = numbers.map do |n| n.to_s end
p str_numbers
#出力結果
["1", "2", "3", "4", "5", "6"]

ただワンライナーで書く場合、⓶は読み辛いので⓵の書き方をお勧めします。

#&とシンボルを使って更に簡潔に

numbers = [1,2,3,4,5,6]
str_numbers = numbers.map(&:to_s)
p str_numbers

#出力結果
["1", "2", "3", "4", "5", "6"]

最終的にここまで簡潔にすることができました( ̄∀ ̄)
&:を使用するときの注意点(mapメソッド使用時)


1.ブロック引数が1つのみ
  #今回のケース: ブロック引数はnのみ
2.ブロックの中で呼び出すメソッドに引数がない
 #今回のケース: to_sメソッドに引数がない
3.ブロック引数に対して呼び出すメソッドは1回
 #今回のケース: s.to_s以外の処理がない

以上の条件を満たす時に使用できます。
お疲れ様でした(^_^)

#この記事を読んでくれた方へ
「ここがおかしい」や「もっとこう書いた方がいいよー」など意見がございましたら、御手数ですがコメントなどで、ご指摘いただければ幸いです。
よろしくお願いします!!

#参考文献
rubyのeach,mapの違い
プロを目指す人のためのRuby入門
rubyリファレンス

23
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?