menu
書いてる野郎
orebike@gmail.com
ループのブロックは一度は必ず実行して、その実行した後に継続するかどうかを決める構文。 普通の while よりもかなり使われる機会は少ないように思える。 逆にこれが出てきたなら、「ちょっと凝ったことしますよ」というメッセージと捉えてもよいかも。
このように書く
do { // 何か処理 } while(hogehoge)
do のブロックが1度は実行されて、条件(hogehoge) が true なら継続してループする。
わざと1回しか回らないブロックを制御の流れで書くと便利な場合がある。このように書く。
do { // 何か処理 } while(false)
大体メソッド化してしまう Java ではあまり見られない書き方だが、C言語とか PHP 方面の人達がたまに書いているので、 それが Java でも輸入されてチラホラ見られたりする。
これが何が嬉しいかというと、ブロック内で break を使うことにより、残りの処理を飛ばしてブロック外に出ることができる。 処理の順番は決まっているが、ある特定条件が来たら止めて次に進めるというモノを書くときにこれが使える。
なぜ Java でそれがあまり使われてないかというと、Java ではこのような処理の流れをダラダラとコントロールするような設計をしないからである。 処理を細かくメソッド化して、それの組み合わせにより機能を実現することが多い。 このような処理の分岐の技工を使ってまとめて書くよりも、クラスを選択するというアプローチを取るのであまりないのだと思う。
このようなことをやらないといけない時点で、それはもうメソッド化されていて、break ではなく return でその機能を果たしているということだろう。