break文は現在のループを強制的に中断する命令文
if文を合わせて使うのが一般的。
変数iが5より大きくなるとfor文を抜ける。これは微妙にFizzBuzz問題だな、
for i in 1..10 do
if i > 5
break
end
puts i
end
next文
next文hは指定の周だけスキップしループそのものは継続して実行します。
iが3の倍数の時にその周のループを終了する
for i in 1..10 do
if i %3 == 0
next
end
puts i
end
演習とコードに理解に努める。
n = 0
while true do
n += 1
puts "好きな文字列を入力してください。(stopで終了)"
answer = gets.chomp
puts "#(n)回 繰り返しました"
if answer == "stop" #answerと等しい時にループ処理を行っているブロックから抜け出す。
break
end
end
メソッドとif文に関して、内容の理解に。
def max(num1, num2)
if num1 > num2
return num1 #num1の方が大きいとき戻り値となりここで処理が止まる
end
num2 #num1の方が小さいとき戻り値となる。(最後の評価された値、返り値として扱う)
end
puts max(5,1)
while true doに関して
while文で無限ループを行う場合、trueを条件として記述します。
「条件式がtrueである限り」while文は処理を行い続けるので、ループのたびにn += 1(nに対して1が加算され続けます。)=無限ループ
この時、無限ループから抜け出す=条件式がfalseになる記述を行う必要があります。
そして方法の一つとして、そのループを強制的に中断するのが"break文"です。
この繰り返しから抜け出す条件式、answer == "stop"はanswerという変数に対してgetsメソッドによってユーザーから"stop"という入力が行われた時に、ループ処理から抜け出す命令を与えます。
簡単にいえば、break文を用いて、"stop"という文字列が入力されたら繰り返しを抜けるようにしている。と言えます。ただgetsメソッドを理解していないとイマイチわからないですよね。
ここからは後学の為にさらにブロックのについて学習します。
注意
理解は完璧ではなく、かつ引用です。
引用サイトURL
http://qiita.com/kidach1/items/15cfee9ec66804c3afd2
「Rubyのブロック・proc」
ブロック do~end(もしくは{~})で囲まれた引数となる為の"カタマリ"
・yield 「ブロックを呼び出すもの」
・proc 「 ブロックをオブジェクト化したもの」
ブロックの性質
・それ単体では存在できず、メソッドの引数にしかなれない (「do~endのカタマリ」がその辺に単体でころがっていることはない
・引数として渡されたブロックは、yieldによって実行される。
これ以上は現在だと理解しきれない為、後に回す。