【初心者Unity】繰り返し文から抜け出そう!(break文・continue文)
はじめに
今回は、前々回までの「繰り返し文」に関わるbreak文とcontinue文をご紹介します。
「繰り返し文」とはその名の通り、ある処理を繰り返させる文でした。繰り返し文ではfor文にしてもwhile文にしても、「条件式」を土台に動いていて、条件式を満たす間は繰り返す、条件式を満たさなくなった場合は繰り返さないという動きをしていました。一見これは便利に見えますが、やや自由度に欠けることがあります。それは、他の条件によってループを抜けさせられないことです。
以前の「while文」の記事で示した例を参考に考えてみましょう。あなたが25mプールを端から端まで泳ぎ切る場面で、while文やfor文だけで考えると、「水に触れているか」が条件式、繰り返したい処理が「水を掻く」となります。ここで、この処理の途中であなたの前を別の泳者が横切ろうとしたとしましょう。するとどうでしょう?我々の実生活に照らし合わせて考えるのであれば、当然あなたは水を掻くという処理を止めて、その泳者が通過しきるまで止まりますよね?しかし、繰り返し文のみの世界ではそんな融通は利きません。「水に触れている」という条件式を満たし続ける限り、あなたは「水を搔く」ことを止めることはできません。仮に別の泳者にぶつかったとしても。。。
いかがでしょうか?「水に触れている」という条件式の他に繰り返しを抜ける条件を追加したくなったのではないでしょうか?例えば、「目の前に他の泳者が現れた場合→繰り返しを抜ける」みたいな。
この、繰り返しを抜けるということをしてくれるのがbreak文、もう少し細かい動きをしてくれるのがcontinue文になります。それでは、前置きが長くなりましたが、これら2つの文について詳しく見ていきましょう。
break文
break文は先ほど述べたように、↓の様に繰り返しから抜けることができる文です。
↑の図を「水泳」の例で作り直すと↓の様になります。
イメージはついてきたでしょうか?
それではいよいよ実際にプログラムを書いてみましょう。
int i = 0 ; while ( i <= 4 ) { i++ ; if (i == 3){ break ; } Debug.Log( i ) ; }
このプログラムの実行結果は、「1 2」となります。while文自体はiが4になるまで繰り返されるはずでしたが、iが3の時にbreak文に到達してしまい、繰り返しから抜けたということが分かります。
continue文
次に、continue文を見ていきましょう。continue文は先ほど述べたように、break文より少しだけ細かい動きをさせることができます。それは、「繰り返し文から抜けないけれども、continue文以下の処理を一時的にスキップすることができる」ということです。
これを図にすると↓の様になります。
いかがでしょうか?少々動きが細かくなったことが伝わったでしょうか?
それでは実際にプログラムを書いてみましょう。
int i = 0 ; while ( i <= 4 ) { i++ ; if (i == 3){ continue ; } Debug.Log( i ) ; }
このプログラムの実行結果は、「1 2 4」となります。while文自体はiが4になるまで繰り返されますが、iが3の時にcontinue文に到達し、デバッグ文をスキップしているため、3が出力されません。
おわりに
みなさんいかがでしたでしょうか?break文やcontinue文を取り入れることによって、繰り返し文をより細かく設定できることを実感できましたでしょうか?次回は変数を便利に扱うことができる「配列」を紹介します!乞うご期待!