##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入門」