[#38470] ruby-dev summary 21403-21530 (draft) — Minero Aoki <aamine@...>

青木です。

25 messages 2003/10/07
[#38475] Re: ruby-dev summary 21403-21530 (draft) — maili31s@... (SugHimsi==SUGIHARA Hiroshi) 2003/10/07

すぎむし。

[#38480] Re: ruby-dev summary 21403-21530 (draft) — Minero Aoki <aamine@...> 2003/10/08

青木です。

[#38481] marshal_dump (was Re: ) — m_seki@... 2003/10/08

[#38484] Re: marshal_dump (was Re: ) — matz@... (Yukihiro Matsumoto) 2003/10/09

まつもと ゆきひろです

[#38486] Re: marshal_dump (was Re: ) — Masatoshi Seki <m_seki@...> 2003/10/09

咳といいます

[#38489] exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to>

<http://www.unixuser.org/~ysjj/diary/?200310a&to=200310082#200310082>

29 messages 2003/10/09
[#38490] Re: exit status on exit! — Koji Arai <JCA02266@...> 2003/10/09

新井です。

[#38503] Re: exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to> 2003/10/10

In Message-Id: <20031010.082218.74733862.JCA02266@nifty.ne.jp>

[#38505] Re: exit status on exit! — Koji Arai <JCA02266@...> 2003/10/10

新井です。

[#38507] Re: exit status on exit! — matz@... (Yukihiro Matsumoto) 2003/10/11

まつもと ゆきひろです

[#38514] Re: exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to> 2003/10/11

In Message-Id: <1065883639.405037.23137.nullmailer@picachu.netlab.jp>

[#38515] Re: exit status on exit! — WATANABE Hirofumi <eban@...> 2003/10/11

わたなべです。

[ruby-list:38544] Re: marshal_dump (was Re: )

From: matz@... (Yukihiro Matsumoto)
Date: 2003-10-14 03:34:22 UTC
List: ruby-list #38544
まつもと ゆきひろです

In message "[ruby-list:38543] Re: marshal_dump (was Re: )"
    on 03/10/14, "NAKAMURA, Hiroshi" <nakahiro@sarion.co.jp> writes:

|ちなみに、債務を分割する場合、各クラスにおいて、そのクラスで導入した
|インスタンス変数が取り出せると便利です。例えばmarshal_dumpペアが
|定義されていないクラス階層では、rubyが、デフォルトで、そのクラスで
|導入されたインスタンス変数のみを書き出してあげるとか。

現時点ではインスタンス変数には「導入したクラス」に関する情報
がなにもついていないので不可能ですね。将来、private instance
variable(って呼ぶのが良いのかどうか)が導入されれば、それらに
ついては可能である可能性が高いですね。

私はmarshalをカスタマイズする必要性に遭遇したことがないので、
正直なところ「なんでもダンプ可能」という現状よりも「より良い」
ものについてのイメージが十分ではありません。いろいろ意見を聞
きたいところではあります。

|> すいません。Javaについてあまり知識が無いので、「loadの後に呼
|> んでくれて」、「元のオブジェクトとすりかえる」という記述が具
|> 体的にはイメージできませんでした。もうちょっと説明していただ
|> けませんか?

|  class Foo implements Serializable {
|    private static final Foo singleton = new Foo();
|
|    public static final Foo getInstance() { return singleton; }
|
|    private Foo() {}
|
|    private void readObject(ObjectInputStream in)
|        throws IOException, ClassNotFoundException {
|      in.defaultReadObject();
|    }
|
|    private Object readResolve() {
|      return singleton;
|    }
|  }
|
|こんなことをしておくと、Fooのserialized formatを読み込む際、
|readObjectで新たなFooインスタンスが生成されたあと、そいつの
|readResolveメソッドが呼ばれ、返ってきたsingletonが、読み込む
|オブジェクトグラフ中に代わりに埋め込まれます。readObjectで
|作られた新たなFooインスタンスはすぐに捨てられます。
|readResolveが呼ばれるタイミングは、serialize formatを読み込んで
|いく最中、readObjectを呼んでオブジェクトの構築が終わった直後です。
|http://java.sun.com/j2se/1.3/docs/guide/serialization/spec/input.doc6.html

だいたい理解できました。私の理解が正しいとすると、Rubyなら
marshal_loadがちょうどreadResolveに相当するのではないでしょ
うか。readObjectがないぶん簡単と言うか、柔軟性が低いと言うか。

                                まつもと ゆきひろ /:|)

In This Thread