なかだです。

At Sat, 29 Sep 2001 20:01:38 +0900,
Shin'ya Adzumi <adzumi / denpa.org> wrote:
> Object#_dump って定義されていないですよね?

 そうでした。インスタンス変数をdump/loadするためのmodule
Marshalableみたいのがあればいいんでしょうかねぇ。

> #<Foo:0x81477bc @foo=1> なオブジェクトの _dump を書くのはさほど難しく
> はないですが、
> #<Foo:0x81353a0 @foo=#<Bar:0x8135378 @bar=#<Baz:0x8135350>>>
> とかどんどん深くなっていくと _dump 書くのも難しくなってきます。そんな
> のはできれば書きたくない。
> 
> irb(main):001:0> foo
> #<Foo:0x81353a0 @foo=#<Bar:0x8135378 @bar=1>>
> 
> で、Bar の @bar が Marshal::dump で出力する必要の無いデータの場合、
> 
> irb(main):002:0> Marshal::dump(foo)
> "\004\006o:\010Foo\006:\t@fooo:\010Bar\000"   # @bar は出力されない
> irb(main):003:0> Marshal::load(Marshal::dump(foo))
> #<Foo:0x81353a0 @foo=#<Bar:0x8135378>>
> 
> というのが簡単に実装できたらいいなと思ってるわけです。実際に
> #<Bar:0x8135378 @bar=1> が出力される直前に Bar#_dup_to_dump なりが呼
> ばれて #<Bar:0x8147848> を返して実際はそれが出力されれば良いかなと。

 この例に限っていえば、Bar#_dump、Bar._loadを定義するというの
でいいような気がしますが。Fooから直接Bar内部まで扱う必要はない
のでは。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦