- - - 目次

Marshal

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

モジュール関数:

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

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

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

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

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

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

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

load(port)

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


- - - 目次

matz@netlab.co.jp