From: Yasuhiro Fukuma Date: 1999-08-29T03:08:24+09:00 Subject: [ruby-dev:7759] Re: return ----Next_Part(Sun_Aug_29_03:07:25_1999_809)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit 福間@福岡 です。 記事 <19990826235709D.tadf@kt.rim.or.jp> にて、 Tadayoshi Funaba さんは書きました: > メソッドから、引数なしで 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 “今月の目標: 「盗聴に注意しましょう」” ----Next_Part(Sun_Aug_29_03:07:25_1999_809)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=eval.c.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; ----Next_Part(Sun_Aug_29_03:07:25_1999_809)----