LoginSignup
8
15

More than 5 years have passed since last update.

Ruby 繰り返し処理いろいろ

Last updated at Posted at 2018-04-01

Rubyでよく使う繰り返し処理を書いていきます。
また、転職の際のコーディングテストでもよく出題されるので、一個でも覚えておくと良いかと。。。。
こういうの使いこなせるとカッコええと思うのでまとめておきます。

メソッド系

繰り返す系メソッドまとめます。

each

みんな大好きeachメソッド。なんだかんだで一番使う頻度が多い。

公式:
格納データ.each do |個別データ|
繰り返し処理
end

example_controller.rb
lists = [a,b,c,d]
lists. each do |list|
 puts list
end
#結果
a
b
c
d

格納データは複数形、個別データは単数形の方が読みやすいです。

loop

どのタイミングで使うのか、未だに把握できていないloop。
やろうと思えば、めちゃめちゃサーバーに負荷をかけられますw。

公式:
loop do
繰り返し処理
end

example_cotroller.rb
loop do
 puts "アイウエオ"
end
#結果
アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ.........

もちろんこれに関しては、止める方法もあります。

loopメソッド時に使える命令 break

これを打てばloopメソッドを止めることができます。
条件式を指定し、その式を満たした時、ループを止めることができます。

example_controller.rb
i = 0
loop do
 i += 1
 puts "アイウエオ"
 if i == 5
  break
 end
end
#結果
アイウエオ
アイウエオ
アイウエオ
アイウエオ
アイウエオ

補足 next

次の処理を飛ばすことができます。

example_controller.rb
i = 0
lists = [a,b,c,d]
lists.[i]
i += 1
 if i == 1
  next
 end

#結果
a
b
d

上の例では、iが1になったタイミングで次の2を飛ばしています。
よってcが飛ばされ、dが出てきます。

times

繰り返し処理の回数を規定したい時に使います。
公式:
回数.times do
繰り返し処理
end

example_controller.rb
5.times do
 puts "アイウエオ"
end

#結果
アイウエオアイウエオアイウエオアイウエオアイウエオ

構文系

次は構文で繰り返す処理を書きます。

while

条件式が真である限り、処理を繰り返します。
公式:
while 条件式 do
繰り返し処理
end

example_controller.rb
 i = 0
 while i<7
  puts i
  i += 1
 end
#結果
0






単純な計算式を作りたい時に利用できます。

until

これはwhileとは逆で、条件式が偽である限り、処理を繰り返します。
公式:
until  条件式 do
繰り返し処理
end

example_controller.rb
i = 0
until i == 5 do
 puts i
 i += 1
end
#結果
0
1
2
3
4

for

eachの構文版のような形で、データに格納されているものを一つずつ取り出し、
処理を行います。
公式:
for 個別データ in 格納データ
繰り返し処理
end

example_controller.rb
lists = [a,b,c,d]
for list in lists
 puts "list"
end
#結果
a
b
c
d

処理は結構ありますが、その場その場で使いこなせるようになりたいです。
他にもあったら教えてほしいいです!

8
15
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
8
15