From: Masatoshi SEKI Date: 2009-04-03T23:09:52+09:00 Subject: [ruby-dev:38272] Re: rinda/eval.rb 咳といいます。 On 2009/04/03, at 14:53, Tanaka Akira wrote:   > In article <20090403113741.A8C2.C613B076@garbagecollect.jp>, > "U.Nakamura" writes: > >> 「呼んでNotImplementedErrorが起きるかどうか見ないと >> 使えるかど >> うかわからん」という事象自体が問題であるならば、互換性の問題 >> を無視してよければ、forkのような例はそもそもそのよう >> な環境で >> はメソッドを定義すべきではないと思います。 >> # 前に却下された気もしますが... > > 最終的にユーザコードはどういう形で書くのが望ましいか、という > ことなんですが、私は現在の NotImplementedError を rescue > す > るスタイルは基本的に良いスタイルだと思っています。 > > begin > fork { ... } > rescue NotImplementedError > ... > end > > このスタイルの利点は、typo の検出能力が高いことです。fork > を > 書き間違えた場合、外側に NoMethodError が伝わります。 > この検 > 出能力は fork が動作するプラットフォームかどうかに依 > 存しませ > ん。また、fork という名前は 1回書くだけで良いと > いうのも typo > の可能性を減らします。 自分で質問しといてなんなんですが‥ すべてのケースがこうなのかわかりませんが、forkでは呼ん でみたら NotImplementedErrorが発生するスタイルが使いやすい気がします。 forkと同様な機能はforkなしには簡単には実現できないんで すよね。 # MKS Toolkitやcygwinはどうしてるんだろ。 今回書きたかったものはブロック付きforkがないとうれしく ないもの だったので、forkが実装されない環境では実行時に例外が発生する ものにします。 テストはforkが実装されない場合にはスキップしてみようと 思います。