[#7968] array .{first, last, at} — Kazunori NISHI <kazunori@...>

西@九大です。

25 messages 1999/10/07
[#7969] Re: array .{first, last, at} — nobu.nakada@... 1999/10/07

なかだです。

[#7983] Re: array .{first, last, at} — Kazunori NISHI <kazunori@...> 1999/10/12

西@九大です。

[#7984] Re: array .{first, last, at} — matz@... (Yukihiro Matsumoto) 1999/10/12

まつもと ゆきひろです

[#7985] [patch] Array#delete_at w/ minus value — EGUCHI Osamu <eguchi@...> 1999/10/12

えぐち@エスアンドイーです。

[ruby-dev:7970] [PATCH?] `else' in `begin'

From: nobu.nakada@...
Date: 1999-10-10 00:27:55 UTC
List: ruby-dev #7970
なかだです。

# 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 @@
 <p>
 <code>begin</code>には省略可能な<code>else</code>節を指定す
-ることができて,本体の実行によって例外が発生しなかった時に実
-行されます.
+ることができて,本体の実行によって例外が発生しなかった時,
+または<code>rescue</code>された時に実行されます.
 </P>
 <p>

  マニュアルに合わせるすると、こうかな?

--- 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るくらいがちょうどいいかも;-)" 伸悦

In This Thread

Prev Next