0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ruby】eachメソッドとmapメソッドの基本

Last updated at Posted at 2024-05-19

はじめに

先輩から、eachメソッドとmapメソッドは、開発現場で頻繁に使用されている と聞き、今回それぞれの基本を初学者の自分なりにまとめてみました。プログラミング初心者の方、Rubyを学習し始めた方達のお役に立てたら幸いです。

結論

eachメソッドとmapメソッドの違いは、その戻り値にあります。

eachメソッド

eachメソッドは、一言でいうと「配列の要素を最初から最後まで順番に取り出すメソッド」です。取り出した要素をどう取り扱うかは、そのあとのブロックに記述されています。ブロックは、以下のコードだとdoからendまでです。

each.rb
nums = [1, 2, 3, 4, 5]
result = nums.each do |n| 
  puts n 
end

# 出力
# 1
# 2
# 3
# 4
# 5

# resultの値
#=> [1, 2, 3, 4, 5]

配列の各要素がnとして取り出され、puts nによって出力されています。

mapメソッド

mapメソッドも、ブロックを使用します。 eachメソッドとの違いは、mapメソッドは繰り返し処理の後、配列にして返してくれることです。 例えば、以下のように、配列の各要素を2倍にし、新しい配列を作るコードがあったとします。

each.rb
nums = [1, 2, 3, 4, 5]
new_nums = []
nums.each { |n| new_nums << n * 2 }
new_nums

# => [2, 4, 6, 8, 10]

上記のeachメソッドの場合だと、空の配列を用意して、他の配列をループ処理した結果を埋め込んでいます。このようなコードは、以下のmapメソッドに置き換えが可能です。

map.rb
nums = [1, 2, 3, 4, 5]
new_nums = nums.map { |n| n * 2 }
new_nums

# => [2, 4, 6, 8, 10]

空の配列を用意する必要がなくなりました。
しかし、空の配列を用意することで、「これがメソッドの戻り値ですよ!」という意図がより明確になる場合もあるため、使い所を見極める必要がありそうです。

おわりに

今回は、Rubyのeachメソッドとmapメソッドの基本的な使い方を初学者の自分なりにまとめてみました。
Rubyを学習中の方達に、少しでもお役に立てたら幸いです!

コメントもお待ちしております:open_hands:(教えてください!笑)

参考

プロを目指す人のためのRuby入門[改訂2版]

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?