timesメソッド
繰り返したい回数.times do
繰り返したい処理
end
3.times do
puts "3回繰り返しますよ"
end
# 実行結果**************
# 3回繰り返しますよ
# 3回繰り返しますよ
# 3回繰り返しますよ
ブロック内で繰り返している回数を知る。
3.times do |i|
puts "#{i}回目です"
end
# 実行結果**************
# 0回目です
# 1回目です
# 2回目です
例のごとくプログラムっていうのは0から始まる定めですので「1回目」から出したい場合は下記のようにする。
3.times do |i|
puts "#{i+1}回目です"
end
# 実行結果**************
# 1回目です
# 2回目です
# 3回目です
簡単すね。
for文
timesはメソッドだがfor文はメソッドではなく文法の形式。
for 変数 in オブジェクト
繰り返したい処理
end
names = ["takashi","hiroki","takako","junko"]
for name in names
puts name
end
# 実行結果**************
# takashi
# hiroki
# takako
# junko
配列から要素を取り出してそれぞれを表示させているということですね。
特定の範囲を繰り返す場合
hoge = 1
baka = 10
sum = 0
for i in hoge..baka
sum += i #sum = sum + i でも同じ意
end
puts sum
# 実行結果**************
# 55
while文
while 条件
繰り返したい処理
end
i = 1
while i <= 3
puts i
i += 1
end
# 実行結果**************
# 1
# 2
# 3
until文
until文はwhile文の条件判定の反対にあたる。
while文は条件が成立している間を繰り返すが、until文は条件が成立するまで繰り返す。
until 条件
繰り返したい処理
end
while文の条件に否定の演算子「!」を使えば同じことができるのであまり利用する機会は無いかも。。。
eachメソッド
eachメソッドはオブジェクトの集まりを一つづつ取り出すときに使用する。
オブジェクト.each do |変数|
繰り返したい処理
end
# 別の書き方
オブジェクト.each{|変数|
繰り返したい処理
}
names = ["kenji","hiroki","atsushi"]
names.each do |name|
puts name
end
# 実行結果**************
# kenji
# hiroki
# atsushi
loopメソッド
loop
繰り返したい処理
end
とにかく一生ループするので危険!しっかりと繰り返しの制御を行わないとPC画面がすごいことになるよ。
繰り返し制御
命令 | 用途 |
---|---|
break | 繰り返しを中断して、繰り返しの中から抜ける |
next | 次の回の繰り返しに処理を移す |
redo | 同じ条件で繰り返しをやり直す |
break
breakは繰り返し全体を中断する。
i = 0
["pocarisweat","cola","dakara","cider"].each do |juice|
i += 1
if i == 3
break
end
p [i, juice]
end
# 実行結果**************
# [1, "pocarisweat"]
# [2, "cola"]
next
nextは次の回の繰り返し処理にいきます。
i = 0
["pocarisweat","cola","dakara","cider"].each do |juice|
i += 1
if i == 3
next
end
p [i, juice]
end
# 実行結果**************
# [1, "pocarisweat"]
# [2, "cola"]
# [4, "cider"]
繰り返し処理のまとめ
主な用途 | |
---|---|
timesメソッド | 回数の指定された繰り返し |
for文 | オブジェクトから要素を取り出す場合 |
while文 | 条件を自由に指定したい場合 |
until文 | whileではわかりにくい条件を指定したい場合 |
eachメソッド | オブジェクトから要素を取り出す場合 |
loopメソッド | 回数制限のない繰り返し |
回数が決まっている場合はtimesメソッドを使用してそれ以外の場合はwhile文、eachメソッドを使えば大抵の事はできるのでまずはこの3つを極めよう。