From: keiju@... (Keiju ISHITSUKA) Date: 1998-03-23T14:27:33+09:00 Subject: [ruby-dev:1896] [Bug?] return in iterator けいじゅ@日本ラショナルソフトウェアです. 多分バグじゃないかな? と思うものに遭遇しました. 以下の2つのメソッドは同じ動作をするはずですよね? def signal_place(place) if @signal_place == :IN_LOAD yield return else signal_place_back = @signal_place @signal_place = place begin catch(("CTRL_C_"+place.id2name).intern) do yield end ensure @signal_place = signal_place_back end end end def signal_place(place) if @signal_place == :IN_LOAD yield # return else signal_place_back = @signal_place @signal_place = place begin catch(("CTRL_C_"+place.id2name).intern) do yield end ensure @signal_place = signal_place_back end end end ところが, 実際には動作が異なっているようです. ちょっと調べてもらえませんか? in.comingにirb.tgzというのを置きました. それを展開し, dim% ruby irb.rb irb0> irb.trace_load=true Switch to load/require trace mode. true irb0> load "complex.rb" としてみて下さい. tar展開後の定義は最初のように定義されていますので, それを, 後者にしてもう一度実行してみて下さい. __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---