まつもと ゆきひろです

In message "[ruby-list:4053] How to 'break' inside case"
    on 97/09/03, Eiji-usagi-MATSUmoto <ematsu / pfu.co.jp> writes:

|うさぎです。
|
|Eiji-usagi-MATSUmoto <ematsu / pfu.co.jp> said:
|> そのひとつめなんですが、parseArgsに関する質問です。
|
|なんか反応がないので(; ;)、次の質問にいきます。

すいません.parseargって私が作ったんでないんで,よくわかんな
いんです.作者は忙しそうだしなあ.ちょっと調べましょう.

|case文の途中で、caseのブロックから抜けでたい時ってどうしたら
|いいんでしょうか?

できません.breakはループ脱出専用です.

|どうしても抜けたい時は、どうしたらいいんでしょうか?

代案としては

  * 抜けたい部分を別メソッドにしてreturn
  * catch/throwをつかう
  * 例外を使う

などが考えられます.

|それとちょっと関係するのですが、ユーザガイドのnext, redo, break
|の説明で、
|
| label_next:
| while (condithion) {
|   label_redo:
|     goto label_next        /* next */
|     goto label_break       /* break */
|     goto label_redo        /* redo */
| }
| label_break:
|
|というのがあるんですが、これってredoとnextが逆のような気が
|するんですけど、何か私勘違いしてますでしょうか?

いいえ,これで良いです.nextはCにおけるcontinueと一緒で,条
件の評価からやり直します(「次」のループに入るわけですね).
redoは条件評価直後の地点にジャンプして今回のループを「やり直
し」ます.
                                まつもと ゆきひろ /:|)