[ruby-list:39042] Re: 内包オブジェクトがnilになったら自分もnilになるには?

From: Kenta MURATA <muraken2@...>
Date: 2004-01-13 16:07:32 UTC
List: ruby-list #39042
むらけんです.

In message <40041528.2050007@tech-notes.dyndns.org> at Wed, 14 Jan 2004 00:56:26 +0900,
Yac <yac@tech-notes.dyndns.org> 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) <muraken2@nifty.com>
Key fingerprint = 622A 61D3 280F 4991 4833  5724 8E2D C5E1 2A3F DBE6

In This Thread