前 - 上 - 次 - 目次

# Marshal

  Rubyオブジェクトをファイル(または文字列)に書き出したり，読み戻したりする機能を提供 するモジュール．大部分のクラスのインスタンスを書き出す事ができますが， 書き出しの不可能なクラスも存在していて(例:`IO`)， そのようなクラスを書き出そうとすると例外が発生します．

## モジュール関数:

  `dump(obj[,port][,limit])`

    objを再帰的にファイルに書き出します．ファイルに書き出せないクラスのイ ンスタンスをファイルに書き出そうとすると例外が発生します．ファイル に書き出せないクラスは以下の通りです．

    > Class, Module, IO(そのサブクラスも), Data

    また，これらのクラスを間接的に指すクラスなども書き出せません．

    portは`IO`(またはそのサブクラス)のインスタンスを 指定します．省略した場合には`dump`はそのオブジェクトをダンプ した文字列を返します．

    出力するオブジェクトがメソッド``_dump`'を定義している場 合には，ファイル出力はそのメソッドを使って行われます．メソッド ``_dump`'は引数として再帰を制限するレベルlimitを受け取り， オブジェクトを文字列化したものを返します． インスタンスがメソッド``_dump`'を持つクラスは必ず 同じフォーマットを読み戻す特異メソッド``_load`'を定義 する必要があります．``_load`'はオブジェクトを表現 した文字列を受け取り，それをオブジェクトに戻したものを返す必要があります．

    limitを指定した場合，limit段以上深くリンクしたオブジェクトをダンプ できません(デフォルトは100レベル)。負のlimitを指定すると深さチェック を行いません。

  `load(port[,proc])`

    portからオブジェクトを読み込んで来て，元のオブジェクトと同 じ状態をもつオブジェクトを生成します．portは文字列か `IO`(またはそのサブクラス)のインスタンスを指定します． procとして手続きオブジェクトが与えられた場合には読み込んで 来るオブジェクトを引数にその手続きが呼び出されます．

前 - 上 - 次 - 目次

matz@netlab.co.jp