[#38323] [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@...

押田です。

22 messages 2009/04/24
[#38331] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/04/26

永井@知能.九工大です.

[#38339] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/04/27

押田です。

[#38340] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/04/27

永井@知能.九工大です.

[#38697] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/06/21

永井@知能.九工大です.

[#38711] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/06/24

押田です。

[#38723] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/07/01

永井@知能.九工大です.

[#38743] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/07/07

押田です。

[#38747] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/07/08

永井@知能.九工大です.

[#38748] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — oshida@... 2009/07/08

押田です。

[#38749] Re: [1.8.7][1.9.1][tk] 自前実装の拡張 widget を使いたい場合 — Hidetoshi NAGAI <nagai@...> 2009/07/08

永井@知能.九工大です.

[ruby-dev:38269] Re: rinda/eval.rb

From: "Akinori MUSHA" <knu@...>
Date: 2009-04-03 08:35:17 UTC
List: ruby-dev #38269
At Fri, 3 Apr 2009 14:53:13 +0900,
Tanaka Akira wrote:
> というわけで、私は fork がない環境で NotImplementedError に
> なるのは良いことである、と思っています。
> 
> 実行せずに fork が動くか調べたいという要求を実現するのにあたっ
> て、その良さを失う必要があるかといえば、私のパッチで実現でき
> るように、べつに失う必要はありません。
> 
> というわけで私は、私の提案が実現する挙動を過渡的なものだとは
> 思っていません。むしろ、この挙動が良いのだ、と思っています。

 なるほど。NotImplementedError の意義については理解しました。

 ただ、 respond_to? における typo のリスクを仰るならなおさら、
respond_to? での判定を助長するような変更はよくないと思います。
(1.8/1.9.1との互換性を考えての提案だとは思うのですが)

 端的に言えば Process.respond_to?(:fork) とシンボルで渡すから
typo が見過ごされうるのであって、もし Process.forkable? とか
Process.implement?(Process::FEATURE_FORK) のような手段が用意
されるのであればそうした問題はないわけです。


 NotImplementedError の捕捉でカバーできないケースとしては、
たとえば fork する前に副作用のある前処理が必要なので、 fork
する段になって NotImplementedError を出されても代替手段に切り
替えられない、といった状況が挙げられます。

 よって何らかの判定手段は必要だが、 respond_to? はふさわしく
ないのではないか、というのがここでの私の考えです。


 さらなる悩みとしては、もし仮に Process.forkable? のような
メソッドを用意し、上述のメソッドが冒頭で

    Process.forkable? or raise NotImplementedError

としたとしても、なおそのメソッド自体に NotImplementedError が
出ないかを事前判定する手段が必要になりそうだということです。

-- 
Akinori MUSHA / http://akinori.org/

In This Thread