From: Yukihiro Matsumoto Date: 2012-03-17T10:27:54+09:00 Subject: [ruby-dev:45376] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて まつもと ゆきひろです In message "Re: [ruby-dev:45372] Marshal.dumpにおけるインスタンス変数の取り扱いについて" on Fri, 16 Mar 2012 21:58:23 +0900, keiju@ishitsuka.com (Keiju ISHITSUKA) writes: |nil, true, Symbol, Fixnum, Class, Module でインスタンス変数が定義され |ていても, Marshal.dump では, その情報がダンプされないようです. | |また, Bignum, Floatはインスタンス変数をダンプしているんですよね. | |これは, 仕様なんでしょうか? こうなっている理由がイマイチ理解できない感 |じなんですよねぇ. ClassとModuleは「先方の同名ものを使う」ので、手元でインスタン ス変数があろうと無視します。いずれにしてもこちらの定義を持っ ていくことはできないので。 nil, true, symbol, fixnumはimmediateなのでインスタンス変数を 持ち歩きたくない(インスタンス変数を追加しちゃうと、グローバル に影響を与えてしまう)というのがその理由です。ClassやModuleと 違って、そうであってはいけないというわけではないのですが、導 入には慎重でありたいです。あと、むしろNumericのサブクラスであ るBignumとFloatでインスタンス変数を無視するようにしたいくらい ですね。 まつもと ゆきひろ /:|)