From: Masatoshi SEKI Date: 2003-01-02T00:03:36+09:00 Subject: [ruby-dev:19280] Re: ruby-1.8.0 / yield(nil)とyield()の 咳といいます。 > ここもそうだし、LocalJumpError のところもそうだった気がしますが、drb > は Ruby の仕様の不安定な所に依存している気がしますね。 う。するどい。でも、わざと依存してるわけじゃないですよ。 # yield周りのところだけじゃないかな。 そういうわけでLocalJumpErrorなんです。 [ruby-dev:18453] Re: break from proc-closureの症状が発生してしまいました。 以前田中さんに書いていただいた再現スクリプトで示すと次のようになります。 break, retryとも例外が発生しません。 # break def f(&block) Thread.start { p [:a, [1].collect(&block)] }.join p :f end p [:b, f { break }] # 1.6.7 000.rb:3:in `f': break from proc-closure (LocalJumpError) from 000.rb:2:in `join' from 000.rb:2:in `f' from 000.rb:7 # 1.8 [:a, nil] :f [:b, nil] 今回はさらにretryも例外になりません。 # retry def f(&block) Thread.start { p [:a, [1].collect(&block)] }.join p :f end p [:b, f { retry }] # 1.6.7 000.rb:3:in `f': retry from proc-closure (LocalJumpError) from 000.rb:2:in `join' from 000.rb:2:in `f' from 000.rb:7 # 1.8 # 無限ループで戻ってこない。