[#7631] 1.3 to 1.4 — Katsuyuki Komatsu <komatsu@...>

小松です。

26 messages 1999/08/12
[#7632] Re: 1.3 to 1.4 — matz@... (Yukihiro Matsumoto) 1999/08/12

まつもと ゆきひろです

[#7634] Re: 1.3 to 1.4 — Katsuyuki Komatsu <komatsu@...> 1999/08/13

小松です。

[#7636] Re: 1.3 to 1.4 — matz@... (Yukihiro Matsumoto) 1999/08/13

まつもと ゆきひろです

[#7638] cvs HEAD (Re: Re: 1.3 to 1.4) — EGUCHI Osamu <eguchi@...> 1999/08/13

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

[#7647] Re: cvs HEAD (Re: Re: 1.3 to 1.4) — matz@... (Yukihiro Matsumoto) 1999/08/13

まつもと ゆきひろです

[#7641] Re: [ruby-ext:00382] New coerce scheme — keiju@... (石塚圭樹)

けいじゅ@日本ラショナルソフトウェアです.

26 messages 1999/08/13

[ruby-dev:7759] Re: return

From: Yasuhiro Fukuma <yasuf@...>
Date: 1999-08-28 18:08:24 UTC
List: ruby-dev #7759
福間@福岡 です。

記事 <19990826235709D.tadf@kt.rim.or.jp> にて、
Tadayoshi Funaba <tadf@kt.rim.or.jp> さんは書きました:

> メソッドから、引数なしで return した場合、nil が返ることになっています
> が、そうならないときがあるみたいです。

[ruby-list:16341] のも同種の問題のようですが、自分より下の階層で
return したときのことを思い出しちゃうみたいですね:

  % cat bug.rb
  def baz
    return 'Are you remember me?'
  end
  
  def bar
    baz
    'Forget it!'
  end
  
  def foo
    r = bar
    p r
    return
  end
  
  p foo

  % ruby -v bug.rb
  ruby 1.4.0 (1999-08-13) [i386-freebsd4.0]
  "Forget it!"
  "Are you remember me?"

修正は、安易に以下のような感じでよろしいでしょうか?

---
 Yasuhiro Fukuma (福間 康弘) as Yasu.F @ Kitakyushu.Fukuoka.Japan
 Web site: http://www8.big.or.jp/~yasuf/
 PGP fingerprint = 17 25 8A F3 99 E5 7E 19  C0 EA 6E 03 8A C3 CE F0
 “今月の目標: 「盗聴に注意しましょう」”

Attachments (1)

eval.c.diff (437 Bytes, text/x-diff)
Index: eval.c
===================================================================
RCS file: /usr/local/cvs/Imported/netlab/ruby/eval.c,v
retrieving revision 1.3
diff -u -r1.3 eval.c
--- eval.c	1999/08/24 08:21:52	1.3
+++ eval.c	1999/08/28 17:32:55
@@ -2142,6 +2142,9 @@
 	if (node->nd_stts) {
 	    return_value(rb_eval(self, node->nd_stts));
 	}
+	else {
+	    return_value(Qnil);
+	}
 	return_check();
 	JUMP_TAG(TAG_RETURN);
 	break;

In This Thread