module function Marshal.#load

load(port, proc = nil, options = {}) -> object[permalink][rdoc][edit]
restore(port, proc = nil, options = {}) -> object

port からマーシャルデータを読み込んで、元のオブジェクトと同じ状態をもつオブジェクトを生成します。

proc として手続きオブジェクトが与えられた場合には読み込んだオブジェクトを引数にその手続きを呼び出します。

options の :freeze キーに真が指定された場合、読み込んだオブジェクトを freeze して返します。同一の文字列が freeze されているときオブジェクトは一つしか生まれないため、この指定によりメモリ使用効率が向上する場合があります。



str = Marshal.dump(["a", 1, 10 ** 10, 1.0, :foo])
p Marshal.load(str, proc {|obj| p obj})

# => "a"
#    1
#    10000000000
#    1.0
#    :foo
#    ["a", 1, 10000000000, 1.0, :foo]
#    ["a", 1, 10000000000, 1.0, :foo]
[PARAM] port:
StringIO (またはそのサブクラス)のインスタンスを指定します。
[PARAM] proc:
手続きオブジェクト。Proc
[PARAM] options:
オプションをハッシュで指定します。指定可能なオプションは以下の通りです。
:freeze

真偽値を指定します。真を指定すると読み込んだオブジェクトを freeze して返します。デフォルトは偽です。

[EXCEPTION] TypeError:
メジャーバージョンが異なるか、バージョンの大きなマーシャルデータを読み込んだ場合に発生します。