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