From: "NAKAMURA, Hiroshi" Date: 2003-10-14T10:18:58+09:00 Subject: [ruby-list:38540] Re: ruby-dev summary 21531-21607 (draft) なひです。 > From: "Kazuo Saito" > Sent: Monday, October 13, 2003 4:48 PM > 今週分の ruby-dev summary です。 いつもありがとうございます。 > [ruby-dev:21590] extend with marshal_dump/marshal_load > > NAKAMURA, Hiroshi and Matz talked about keeping 'extend' information of > marshaled object. この件なのですが、 > It is ignored by default. extendの情報は、デフォルトではmarshalled(英)/marshaled(米) objectに書き出されます。ので、ignoreされない、という言い方に なるような気がします。 > When users define original marshal_dump and > marshal_load, they are responsible > for supporting the information by themselves. ここはその通りです。"original marshal_dump"というのが ちょっとわかりにくい気がしますが、どうでしょう。 まとめると、何もしないと書き出されますが、ユーザがカスタムの marshal_dump/marshal_loadペアを定義すると、ivarとextendは 書き出されないため、ユーザが自分の責任で書き出すなり警告 するなりしないといけません。 > Matz showed us an example how to dump and load such objects > correctly in [ruby-dev:21593]. In following example, objects > of class Quux can be dumped and loaded. Notice that class Foo > and Bar does not needed to concern about marshaling 'extend' info. > > This example is already applied some patches by NaHi in > [ruby-dev:21595] to original one: > extends = (class << self; self; end).ancestors - self.class.ancestors - [ExtendMarshal] この[ExtendMarshal]の除外はmisleadingな気がしますが、 あんまり後から手を入れるのもよくないかな。 あと一点、前回のruby-dev summaryで、 Matz decided to dump/restore instance variables automatically, even if #_dump/#marshal_dump is defined. というのがありますが、これはこのあと元に戻ったので、説明があったほうが 混乱が少ないかもしれません。しかし、説明を始めると長そうだし、 「ruby-dev summary」として、ない話を取り出してきてサマリを作る というのもヘンな気がします。というわけで、 _dump/_load、marshal_dump/marshal_load共に変更が入った、 詳しくはソース見ろ、marshal_dump/marshal_loadはまだもう少し 変更が入りそう。 とか?