0
1

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 3 years have passed since last update.

[Ruby]色々なeachの種類

Last updated at Posted at 2020-12-27

はじめに

勉強していると色々な種類のeachが出てきたので
忘れないように記していきます。:sunny:

eachメソッド

1 . 配列や範囲オブジェクトなどに用意されているメソッドです。
オブジェクトに含まれている要素を取り出します。

fruits = [ "apple", "orange","banana"]
 
fruits.each do |fruit|
  p fruit
end

#=>"apple"
#  "orange"
#  "banana"

2 . 配列のkeyとvalueを同時に取り出して使用したい場合は変数を2つ設定します。

fruits = { apple: 100, orange: 200, banana: 300}

fruits.each do |key, value|
  puts "#{key}の値段は#{value}円です。"
end

#=>"appleの値段は100円です。"
#  "orangeの値段は200円です。"
#  "bananaの値段は300円です。"

下記のように記述することもできます。
(お好みで。長いブロックを書くときは前のような記述は⇧、コンパクトに書きたい場合は⇩)

fruits = { apple: 100, orange: 200, banana: 300}

fruits.each { |key, value| puts "#{key}の値段は#{value}円です。"}

#=>"appleの値段は100円です。"
#  "orangeの値段は200円です。"
#  "bananaの値段は300円です。"

each_keyメソッド

keyのみを取り出したい場合に使用します。

fruits = { apple: 100, orange: 200, banana: 300}

fruits.each_key {|key|  p "#{key}の値段" }

#=>"appleの値段"
#  "orangeの値段"
#  "bananaの値段"

each_valueメソッド

valueのみを取り出したい場合に使用します。

fruits = { apple: 100, orange: 200, banana: 300}

fruits.each_value { |value| p "#{value}円"}

#=>"100円"
#  "200円"
#  "300円"

each_with_indexメソッド

1 . 配列の要素意外にindexの数字を使用したい場合に使用します。

fruits = [ "apple", "orange","banana"]
 
fruits.each_with_index do |a,i|
  p "#{i}個の#{a}があります。"
end

#=>"0個のappleがあります。"
#  "1個のorangeがあります。"
#  "2個のbananaがあります。"

2 . 引数にindexの初期値を設定して開始する数値を指定できます。
   (◯番から始めたいんだよなぁっていうとき。)

fruits = [ "apple", "orange","banana"]
 
fruits.each.with_index(5) do |a,i|
  p "#{i}個の#{a}があります。"
end

#=>"5個のappleがあります。"
#  "6個のorangeがあります。"
#  "7個のbananaがあります。"

each_sliceメソッド

引数に数を指定します。そうすることで名前の通り指定した数をsliceして要素を取り出すことができます。

fruits = [ "apple", "orange", "banana", "lemon","lime"]

fruits.each_slice(2) do |fruit|
 p fruit
end

#=>["apple", "orange"]
#  ["banana", "lemon"]
#  ["lime"]

each_lineメソッド

改行部分で分けて取り出すことができます。

fruits = "apple\norange\nbanana\nlemon"
fruits.each_line {|line| p line.chomp }

#=>[:apple, :orange, :banana, :lemon]

each_with_objectメソッド

引数のオブジェクトと要素を評価して最後に引数のオブジェクトを返します。


arr = [1, 2, 3]

result = arr.each_with_object({}) do |item, memo|
  memo[item] = item + 1
end

p result
#=>{1=>2, 2=>3, 3=>4}

こちらはさらに深堀として。。

まとめ

eachの仲間も色々な種類があるのがわかりました。
少しずつ覚えてできる範囲を広げて行こう・・・!!:fire:

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?