07/04/11 に GOTO Kentaro <gotoken / gmail.com> さんは書きました:
> > 現在ソースにアクセスできないみたいです…
>
> 手元のブックマークをさがしてみました。
> http://cvs.m17n.org/viewcvs/ruby/amarshal/

ありがとうございます。アクセスできました。
説明がほとんど無くソースをチラ見しただけですが、
組み込みクラスは個別に対応しているようですね。

自分も個別に対応するしかないかなーと思って、
取り敢えずインスタンス変数に情報を保持しているクラスなら
深いコピーを作成できる(と思う)メソッドを作ってみました。

http://d.hatena.ne.jp/pegacorn/20070412/1176309956
>|ruby|
class Object
  def deep_clone
    return @deep_cloning_obj if @deep_cloning
    @deep_cloning_obj = clone
    @deep_cloning_obj.instance_variables.each do |var|
      val = @deep_cloning_obj.instance_variable_get(var)
      begin
        @deep_cloning = true
        val = val.deep_clone
      rescue TypeError
        next
      ensure
        @deep_cloning = false
      end
      @deep_cloning_obj.instance_variable_set(var, val)
    end
    deep_cloning_obj = @deep_cloning_obj
    @deep_cloning_obj = nil
    deep_cloning_obj
  end
end
||<


--
pegacorn