From: Kenta MURATA Date: 2004-01-14T01:07:32+09:00 Subject: [ruby-list:39042] Re: 内包オブジェクトがnilになったら自分もnilになるには? むらけんです. In message <40041528.2050007@tech-notes.dyndns.org> at Wed, 14 Jan 2004 00:56:26 +0900, Yac wrote: > あるオブジェクトを内包するオブジェクトがあります。 > 内包しているオブジェクトがnilになったら、自分もnilになってほしいのです > が、どのように書いたらいいでしょうか。 > コードで示すと、こんな感じです。 > Test#removeで@raw_obj をnilにした後は、testが指すオブジェクトがnilになっ > て欲しいのです。 > 自分ではいろいろ調べたつもりなのですが、見つけられませんでした。 無理だと思います. > test = Test.new > test["name"] = "名前" > p test["name"] # => "名前" > test.remove > p test # これをnilにしたい 変数 test は Test.new で生成されたインスタンスを指していますが, test.remove されたときに変数 test が nil を指すように変更する には,Test のインスタンスが自分を指している変数を全て監視して いなければ実現できません. Test のインスタンスが Test#remove された後の状況は,IO のイン スタンスが IO#close された後に似ていると思うので,IO のように close されているかどうかを各メソッドで調べて,例外を発生させる のが良いのではないでしょうか? -- 1024D/2A3FDBE6 2001-08-26 Kenta MURATA (muraken) Key fingerprint = 622A 61D3 280F 4991 4833 5724 8E2D C5E1 2A3F DBE6