From: nobu.nakada@... Date: 1999-10-10T09:27:55+09:00 Subject: [ruby-dev:7970] [PATCH?] `else' in `begin' なかだです。 # ruby-dev かな ruby-list かな。 $ ruby -e 'begin raise rescue p "rescue" else p "else" end' "rescue" "else" rescue されたときも else が実行されるようなんですが。マニュアル では「本体の実行によって例外が発生しなかった時」となってますが、 「または rescue された時」もなのでしょうか。 マニュアルを合わせるとすると。 --- syntax.html.orig Tue Aug 24 00:34:02 1999 +++ syntax.html Sun Oct 10 09:20:48 1999 @@ -1742,6 +1742,6 @@
beginには省略可能なelse節を指定す
-ることができて,本体の実行によって例外が発生しなかった時に実
-行されます.
+ることができて,本体の実行によって例外が発生しなかった時,
+またはrescueされた時に実行されます.
マニュアルに合わせるすると、こうかな? --- dist/eval.c Mon Oct 4 23:10:12 1999 +++ build/eval.c Sun Oct 10 02:40:30 1999 @@ -2084,10 +2084,10 @@ resq = resq->nd_head; /* next rescue */ } } - if (state) JUMP_TAG(state); - if (node->nd_else) { /* no exception raised, else clause given */ + else if (!state && node->nd_else) { /* no exception raised, else clause given */ result = rb_eval(self, node->nd_else); } + if (state) JUMP_TAG(state); } break; -- そうだ 強気に ちょっと インチキに☆彡 中田 "Bugるくらいがちょうどいいかも;-)" 伸悦