わたなべです. Eiji-usagi-MATSUmoto <ematsu / pfu.co.jp> writes: :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 C でも do { if (a == 1) { printf("and a = 1\n"); break; } else { printf("and a != 1\n"); } printf("hogehoge\n"); } while (0); なんてやる人がいます(おいらじゃないよ). :となって、こんなところでbreakしちゃだめとといわれます。 :どうしても抜けたい時は、どうしたらいいんでしょうか? これを真似ると def hoge(a, b) case b when 0 begin printf("b = 0\n") if a == 1 printf("and a = 1\n") break # <== ここで抜けたい! else printf("but a != 1\n") end print("hogehoge\n") end while FALSE end end なんてできます. うーむ, 邪道. :というのがあるんですが、これってredoとnextが逆のような気が :するんですけど、何か私勘違いしてますでしょうか? perl と同じなので, これで合ってます. -- わたなべひろふみ