names=dump
visibility=public
kind=defined

--- dump(obj, port, limit = -1) -> IO
--- dump(obj, limit = -1) -> String

obj を指定された出力先に再帰的に出力します。

ファイルに書き出せないオブジェクトをファイルに書き出そうとすると
例外 [[c:TypeError]] が発生します。
ファイルに書き出せないオブジェクトは以下の通りです。

 * 名前のついてない [[c:Class]]/[[c:Module]] オブジェクト。(この場
   合は、例外 [[c:ArgumentError]] が発生します。無名クラスについて
   は、[[m:Module.new]] を参照。)
 * システムがオブジェクトの状態を保持するもの。具体的には以下のイン
   スタンス。[[c:Dir]], [[c:File::Stat]], [[c:IO]] とそのサブクラス
   [[c:File]], [[c:Socket]] など。
 * [[c:MatchData]], [[c:Data]], [[c:Method]], [[c:UnboundMethod]],
   [[c:Proc]], [[c:Thread]], [[c:ThreadGroup]], [[c:Continuation]]
   のインスタンス。
 * 特異メソッドを定義したオブジェクト

また、これらのオブジェクトを間接的に指すオブジェクトなども書き出せ
ません。例えば、デフォルト値を求めるブロックを持った [[c:Hash]] は
[[c:Proc]] を間接的に指していることになります。

  p Marshal.dump(Hash.new {})
  => -:1:in `dump': cannot dump hash with default proc (TypeError)

マーシャルの動作を任意に定義することもできます。

@param obj ダンプする対象のオブジェクトを指定します。

@param port [[c:IO]] かそのサブクラスのインスタンスを指定します。

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

@return port を省略すると、obj をダンプした [[c:String]] を返します。
             port を指定すると port を返します。

@raise TypeError ファイルに書き出せないオブジェクトをファイルに
                 書きだそうとした場合に発生します。

@raise ArgumentError 名前の付いていない [[c:Class]] や [[c:Module]]
                     オブジェクトをダンプしようとした場合に発生します。

@raise ArgumentError limit 段以上深くリンクしたオブジェクトをダンプしようと
                     した場合に発生します。

@see [[m:Object#marshal_dump]], [[m:Object#marshal_load]]

