けいじゅ@日本ラショナルソフトウェアです.

えー. ちょっと書き方が悪かったせいか, 色々な解釈がでていますが, これが正
解です(^^;;; オブジェクトの初期化がしたかったんです.

# さすが, まつもとさん付き合いが長い(^^;;;

In [ruby-dev :16255 ] the message: "[ruby-dev:16255] Re: pstore.rb and
sync.rb ", on Mar/07 16:47(JST) Yukihiro Matsumoto writes:

>まつもと ゆきひろです

>|オブジェクトを初期化するときにインクルードされているモジュールに関する初
>|期化がinitializeでしかできないところに問題があるような気がします.
>|
>|object.extend Module
>|
>|の時には, extend_objectを変更すればいいわけですが, 同様の仕組みと言うか
>|initializeには関係なく呼ばれるメソッドがあるのが望ましくないでしょうか? 
>|たとえば,オブジェクトを作成したときには, かならず module_initializeが呼
>|ばれるとか?
>
>問題(オブジェクトを初期化するときにインクルードされているモ
>ジュールに関する初期化がinitializeでしかできない)には同意し
>ますが、解決案(オブジェクトを作成したときにはかならず 
>module_initializeが呼ばれる)には賛成しません。
>
>複数モジュールがincludeされたときには当然複数のモジュールが
>それぞれmodule_initializeを持つことになるわけで、うっかり
>superが呼ばれないという問題はあいかわらず発生するように思い
>ます。

ですが, 作る人と使う人がどっちが注意すべきかという問題を考えると, クラス
側で常にsuperを呼べと言うよりは, モジュールでオブジェクトの初期化を行い
たいなら, Module#module_initializeを呼び, かつその中ではsuper呼べという
ならまだ問題は少なそうだと思いません?

>とはいえ、もっとよいアイディアは持ってないのですが。

うーん. じゃ.

In the message: "[ruby-dev:16257] Re: pstore.rb and sync.rb ", on
Mar/07 18:01(JST) Tanaka Akira writes:

> この module_initialize の module というのはメタ変数で
> object.extend Module の Module を小文字にしたものだと読みとったのです
> が...

ここまでは言っていません. 考えなくもなかったのですが, 絶対反対されそうな
ので(^^;;;

ただ, これの変形で

  Mod.initialize_for(obj)

が呼ばれるというのは?


__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---