From: Masatoshi SEKI Date: 2000-06-27T20:32:24+09:00 Subject: [ruby-list:23546] Re: dump a single object 咳といいます。 > |直列化の観点からクラスを分類すると: > | A. インスタンス変数を持たないクラス > | 例1(組み込み):String, 例2(空のクラス):class Foo;end > | B. インスタンス変数以外の情報を持つクラス > | 例:Cで書かれた一部のクラス。とくに組み込み。 > |ほとんどの組込みクラス(String, Array, Hash, ...)は、 > |「A かつ B」ですね。組み合わせは4通りありますけど、 > |やっかいなのが「(not A) かつ B」です。苦し紛れの対策は上述。 > > お気づきかどうか分かりませんが1.5系移行ではすべてのオブジェ > クトがインスタンス変数を持てます。整数でさえも。 1.4 (1.3?)からじゃないでしたっけ? RefMarshalは、オブジェクトをdupしてインスタンス変数を 参照に置き換えます。(整数でさえも ;-) インスタンス変数以外の方法でオブジェクトを参照できる Array, Hash はケアしてあげます。(←これ以外にもあるかも…) nilなどdupできないのはあきらめてそのまま格納します。 最終的に marshal に頼るつもりだったので marshal 不能なものは 考えていませんが、Map, Ref の表をつくるだけなら、dup可能な ものであればある程度対応できるかも。 でもやっぱりできないものはありますね。