まつもと ゆきひろです
In message "[ruby-dev:18186] [req] Marshal"
on 02/09/05, Keiju ISHITSUKA <keiju / rational.com> writes:
|この件も, 先週松本さんと直接話をしたものですが... きっと, 忘れているに
|違いないと思うので, メイルします.
忘れてるっていうか、この間の「特異クラスをダンプ/リストアす
るメソッド」ってのは、あのままでは実現できないと感じたので、
私の中では話が終わってました。
|現行のMarshalは特異メソッドを持ったオブジェクトはダンプできません. ダ
|ンプできなくしているのは, リストアできないからだと思いますが, 現行は制
|限がきつすぎると思います.
同意します。
|何がきついかというと, (名前つき)モジュールをオブジェクトにextendした場
|合です. この場合も, ダンプできないわけですが, リストアしてオブジェクト
|を再生できないわけではありません. リストアしたあと, extendしてあったモ
|ジュールをextendすれば良いわけですから.
|
|こうすれば, 特異メソッドを持ったオブジェクトの場合も, モジュールを
|extendして用いればダンプできるようになりますので, 回避策として使えるよ
|うになります.
|
|ということで, Marshalに対するリクエストは, (名前つき)モジュールを
|extendしたオブジェクトはダンプ/リストアできるようにしてほしい. という
|ものです.
それ自身が定義した特異メソッドを持たず、extendしたものだけを
持つオブジェクトはダンプ可能にするということですよね。これは
現実的なアイディアですね。
考えてみましょう。marshalのフォーマットが変化するのを嫌がる
人は多いのですが。特にdRubyを使ってる方面。
matz.