From: Nakamura Akifumi Date: 2001-06-21T09:10:22+09:00 Subject: [ruby-list:30348] Re: TMarshal お世話になっております。 A.中村です。 On Tue, 19 Jun 2001 23:49:55 +0900 rubikitch wrote: > > おや?るびきちさんはclass Objectにdump_textメソッドを > > 付けないんですか?あんまり意味無しってことですか? > 「eval(x.dump_text) == x」になることを目的として作ったので、 > 無闇にObjectに定義してしまうのはちょっとまずいと思いまして。 あっそうか。同値と同一の問題っすね。 #「循環参照の問題」も結局それに行きつくわけだし。 こっちの事例ではたまたま、同一性を意識しないとならないObjectは 某言語から提供されるObject型値だけだったんで、 それのラッパーObjectをrubyで作り、某側のObjectIDを 中に保持するかたちにするだけで、済ませてしまいました。 で、 Obj_pool={} class Object2 def Object2.new_ifnew(id) if Obj_pool.has_key?(id) obj=Obj_pool[id] else obj=self.new(id) Obj_pool[id]=obj end end obj end なんてすることで同一性を確保。ありがち(^^; 幸いにしてObject2.newをユーザーが自由に呼べるようにすることに あんまり意味がない状況だったんで、ちと非標準的くさいですが、 こーしました。