LoginSignup
5

More than 5 years have passed since last update.

break文

Last updated at Posted at 2015-07-28

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によって実行される。

これ以上は現在だと理解しきれない為、後に回す。

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
5