From: matz@... (Yukihiro Matsumoto) Date: 2000-06-22T12:45:30+09:00 Subject: [ruby-list:23447] Re: persistent framework (Re: dump a single object) まつもと ゆきひろです In message "[ruby-list:23431] persistent framework (Re: dump a single object)" on 00/06/22, Hideto ISHIBASHI writes: |<質問 1> | String は identity があり、Integer は immutable で | identity がないんですよね。区別が必要かどうか・・・ | オブジェクトに Object#id のほうの ID を設定する方法ないですよね。 | FixnumとSymbolとtrueとfalseとnilにはIdentityがないと言えない ことはないですが、一応すべてのRubyオブジェクトにはIdentityが あると考えても良いと私は考えています。 |<質問 3> オブジェクトのクラスは Object#type か? | 特異オブジェクトの Object#type は、最初に new したクラスを | 返すと思っています。特異メソッドを定義したり、特異クラス | としてインスタンス変数を定義したりしたオブジェクトとかは? | | copy = obj.type.new してから特異メソッドの定義を復元する方法は | ありませんよね (Method クラスとかよくわかっていないので ^^;)。 | Object#instance_eval("...")でインスタンス変数は復元できますね。 | Object#typeで得られる情報は特異メソッドの情報を含みません。 特異メソッドの情報を(プロセスを越えて)持ち出す方法はありませ ん。 |というわけで、中心課題は、 | 「インスタンス変数を個別に直列化するには?」 |です。 instanve_variablesを使えばそのオブジェクトのインスタンス変数 の一覧が得られますから、それをひとつずつシリアライズすれば良 いと思います。で、インスタンス変数以外の情報を持つクラスにつ いては個別にdump/loadメソッドを用意するしかないでしょうね。 まつもと ゆきひろ /:|}