今日も学んだことを忘れない為にメモします
each_with_indexメソッドとは?
each_with_indexは、Rubyに標準で組み込まれている要素の繰り返し処理であるeachメソッドに、その要素が何番目に処理されたのかも表すことが出来る機能がついたメソッド。
これを使えば任意の数字が配列の中の何番目に格納されているかを確認できるプログラムを実装できる。
例えば下記のようにランダムな数字が入った配列があるとする。
[3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
この中から任意の数字を探して何番目に含まれているかいない確認した場合は下記のように記述する。
def search(target_num, input)
input.each_with_index do |num, index|
if num == target_num
puts "#{index + 1}番目にあります"
return
end
end
puts "その数字は含まれていません"
end
input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
search(10, input)
配列を変数inputに代入して確認したい数字とinputという変数を実引数としてセットしてsearchメソッドを呼び出す。
そして、呼び出されたsearchメソッドでは、実引数でセットした値を仮引数target_numとinputとして受け取る。
searchメソッド内ではinput.each_with_indexでinputに格納されている要素を1つひとつnumとして取り出すと同時に、要素毎に割り当てられている添字をindexとして取得する。
次に、if文でnum == target_numという条件式を設定
numとtarget_numが等しければ、numがinputの中の何番目に含まれているかが出力される。
添字は0から始まるので#{index + 1}と記述して、「0番目」が出力されないようにする。
numとtarget_numが等くなければ、「その数は含まれていません」と出力される。
今回、配列には10は含まれていないので「その数は含まれていません」と出力される。
その数は含まれていません
*下記のようにreturnではなくelseで記述すると配列の要素の数、処理が行われる
def search(target_num, input)
input.each_with_index do |num, index|
if num == target_num
puts "#{index + 1}番目にあります"
else
puts "その数は含まれていません"
end
end
end
input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
search(92, input)
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
その数は含まれていません
以上がeach_with_indexメソッドを使ってみた備忘録になります。
returnってどこで使うんだろうと思ってましたがこういう場面で使うんだってreturnの使いどころも学べました。