うさぎです。

Eiji-usagi-MATSUmoto <ematsu / pfu.co.jp> said:
> そのひとつめなんですが、parseArgsに関する質問です。

なんか反応がないので(; ;)、次の質問にいきます。

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

たとえば、

def hoge(a, b)
  case b
  when 0
    printf("b = 0\n")
    if a == 1
      printf("and a = 1\n")
      break                    # <== ここで抜けたい!
    else
      printf("but a != 1\n")
    end
    print("hogehoge\n")
  end
end

とやると、hoge(0,0)はいいんですが、hoge(1,0)を実行すると、

b = 0
and a = 1
test.rb:7:in `hoge': LocalJumpError| unexpected break
        from test.rb:16

となって、こんなところでbreakしちゃだめとといわれます。
どうしても抜けたい時は、どうしたらいいんでしょうか?

 * * *

それとちょっと関係するのですが、ユーザガイドの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が逆のような気が
するんですけど、何か私勘違いしてますでしょうか?

では。

--
Eiji MATSUmoto  <ematsu / pfu.co.jp>
PFU Limited, Ishikawa Japan. < Call me 'USAGI' please. (^^) >