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?

More than 5 years have passed since last update.

eachメソッドの使い方(each_with_indexとeach.with_index)

Posted at

##eachメソッド
eachメソッドとは、配列の要素分の処理を繰り返し行いたい場合に使用するメソッドです。

#書き方
配列.each do |ブロック変数| #配列内の要素が順番に代入される
繰り返したい処理
end

sports_list = ["サッカー","野球","ラグビー","キックボクシング"]
sports_list.each do |list|
puts list
end
#=>サッカー
#=>野球
#=>ラグビー
#=>キックボクシング

###do…endと{}
Rubyでは、{ }を使うことでdo…endを使わずに同様の処理を書くことができます。

#書き方
配列.each { |ブロック変数| 繰り返したい処理 }

sports_list = ["サッカー","野球","ラグビー","キックボクシング"]
sports_list.each{ |list| puts list }
#=>サッカー
#=>野球
#=>ラグビー
#=>キックボクシング

do…endと{}の使い分けは明確には決まっていませんが
・改行を含む長いブロックの場合はdo…end
・1行で書けるブロックの場合は{ }
と使い分けられる場合が多いです。
##each_with_indexメソッド

sports_list = ["サッカー","野球","ラグビー","キックボクシング"]
sports_list.each_with_index { |list, index| puts "#{index}番目は#{list}です" } 
#=>0番目はサッカーです
#=>1番目は野球です
#=>2番目はラグビーです
#=>3番目はキックボクシングです

each_with_indexメソッドを使うことで、配列のインデックスも表示させることができます。
インデックスは、0から始まります。なので、1から番号を始めたい場合は、"#{ i+1 }番目のようにiに1を足してやることで求めることができます。

##each.with_indexメソッド

sports = ["サッカー","野球","ラグビー","キックボクシング"]
#インデックスを99に指定
sports_list.each.with_index(99) { |list, index| puts "#{index}番目は#{list}です" } 
#=>99番目はサッカーです
#=>100番目は野球です
#=>101番目はラグビーです
#=>102番目はキックボクシングです

任意のインデックスから始めたい場合、each.with_indexメソッドを使うことで任意の番号を指定することができます。

参考資料

Rubyリファレンス:each_with_index
https://ref.xaio.jp/ruby/classes/enumerable/each_with_index
「プロを目指すための人のRuby入門」

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?