Rubyの繰り返し処理の解説|初心者・独学者向け

プログラミング言語のRubyの繰り返し処理についての解説を行います。
繰り返し処理はプログラミング言語にかかわらず必ず利用する 内容なので、初心者・独学者の方は特に学ぶ必要のある処理になります。
※下記のサンプルコードはすべて.rbファイルで可動させた場合の 例です。
なお、繰り返し処理の練習問題も用意しています。
Rubyの練習問題:繰り返し処理編|初心者・独学者向け入門コンテンツ
eachメソッド
.eachメソッドは文字列、配列、ハッシュ、範囲オブジェクトなどの要素の数だけ、繰り返し処理を実行していきます。
greetings = ["こんにちは","おはよう","さよなら"] greetings.each do |greeting| puts greeting end #実行結果 #こんにちは #おはよう #さよなら
更に繰り返しの順番によって処理を変更する事も可能です。
nums = [1,2,3,4,5,6] nums.each do |num| if num.odd? p "#{num}"+"は偶数です" else p "#{num}"+"は奇数です" end end #実行結果 # "1は奇数です" # "2は偶数です" # "3は奇数です" # "4は偶数です" # "5は奇数です"
※.odd?メソッドは自身が奇数の場合はtrueを返すメソッドです。
偶数の場合はeven? メソッドを利用します。
.eachwithindexメソッド
動きはeachメソッドと同じですが、
は繰り返しの番号を付与する事が可能です。
greetings = ["こんにちは","おはよう","さよなら"] greetings.each_with_index do |greeting,i| puts "#{i+1}"+":"+ "#{greeting}" end #実行結果 #1:こんにちは #2:おはよう #3:さよなら
上記の通り、繰り返しの番号を付与する場合は、ブロック引数の 後ろに2つ目の引数(i)を設定します。 また繰り返しのカウントは0から開始されるので、 繰り返し番号には1を追加しています。
なお、
でブロック引数を1つにした場合でも 処理は実行されます。
greetings = ["こんにちは","おはよう","さよなら"] greetings.each_with_index do |greeting| puts "#{greeting}" end #こんにちは #おはよう #さよなら
for文
配列や範囲オブジェクト、ブロックなどに含まれる 各オブジェクト要素を順に変数に代入して、繰り返して処理を実行します。代入する要素がなくなったら繰り返しを終了します。
下記は1〜10の範囲で数字を出力していきます。
for i in 0..10 do puts i end
※do は省略可能なので、以下から省略します。
for文のハッシュに対しての処理
ハッシュの場合、引数を2つ設定すれば、keyとvlueが出力されます。
animals = { :dog => "犬", :cat => "猫", :monkey => "猿" } for key,value in animals puts "#{value}を英語でいうと#{key}です" end #実行結果 #dog # 犬 # cat # 猫 # monkey # 猿
timesメソッド
単純に同じ処理を繰り返したい場合は、timesメソッドを利用します。
5.times do puts "Hello" end #実行結果 #"Hello" # "Hello" # "Hello" # "Hello" # "Hello"
ブロック引数を設定すれば、処理回数を設定することもできます。
5.times do |i| puts "#{i+1}回目の:Hello" end #実行結果 # 1回目の:Hello # 2回目の:Hello # 3回目の:Hello # 4回目の:Hello # 5回目の:Hello
whileメソッド
条件がtureになる限り繰り返し実行します。 下記では100回繰り返し処理を行うと終了する処理となります。
i = 1 while i < 101 if i.even? puts "#{i}は偶数です" else puts "#{i}は奇数です" end i +=1 # 自己代入 end
breakメソッドとnextメソッド
breakメソッドは指定条件になったら、ループを強制的に中断させるメソッドです。
i = 1 while i < 101 puts i break if i == 20 i +=1 # 自己代入 end
nextは指定条件になると、その処理をスキップして次のループ処理を行うメソッドとなります。
nums = [1,2,3,4,5,6] nums.each do |num| if num.odd? next end p num end 実行結果 # 2 # 4 # 6
all?メソッド
繰り返し処理を行い、要素内が指定条件に合致した場合に、true を返します。
例えば、以下のように配列内の情報が奇数の場合trueを返すなどのプログラムも可能です。
num=[1,3,5] p num.all?(&:odd?) 実行結果 true
その他関連記事
Rubyの練習問題:文字列編|初心者・独学者向け入門コンテンツ
Rubyの練習問題:繰り返し処理編|初心者・独学者向け入門コンテンツ
初心者・独学者向け|Rubyの配列処理の入門とよく使うメソッド
初心者・独学者向け|Rubyのハッシュ入門とよく使うメソッド
初心者・独学者向け|RubyのStringクラスとよく使うメソッド