Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

はじめまして!
今回は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リファレンス

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした