From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1998-03-13T14:36:30+09:00 Subject: [ruby-dev:1759] Re: WeakRef けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :01755 ] the message: "[ruby-dev:1755] Re: WeakRef ", on Mar/13 11:35(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >|あと, ObjectSpace.id2ref がマトモに公開されてますが, それでいいんです >|かね?? > >id2refの使用は予告なく変更される事がありますので,一般には使 >わないで下さい. ですよね. もうちょっと(Cの中に)隠蔽したほうが良くありません? WeakRef::__getobjCで書くってことですが... rubyでクラスを書いて一部のメソッドだけCにするとかできないんでしたっけ? >|ID_REV_MAPっていらないと思うんですが... >WeakRefがGCされたときに元のオブジェクトをID_MAPから取り除く >のが目的です.これがないとID_MAPがどんどん大きくなるのではな >いかと考えているのですが…. ですよね. 多分そうなのかなと後で思いました. その場合は: class WeakRef ObjectSpace.call_finalizer id ID_MAP[@id] = self.id ID_REV_MAP[self.id] = @id end end の``->''部分がが必要なのでは? あと, 話しはかわるんですが, 私はこういう実装を想像していたのですが: --*-- class WeakRef> e-mail: keiju@rational.com <<---