From: matz@... (Yukihiro Matsumoto) Date: 1997-09-03T10:24:15+09:00 Subject: [ruby-list:4054] Re: How to 'break' inside case まつもと ゆきひろです In message "[ruby-list:4053] How to 'break' inside case" on 97/09/03, Eiji-usagi-MATSUmoto writes: |うさぎです。 | |Eiji-usagi-MATSUmoto 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は条件評価直後の地点にジャンプして今回のループを「やり直 し」ます. まつもと ゆきひろ /:|)