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

From: Hidetoshi NAGAI <nagai@...>
Date: 2004-01-13 16:35:18 UTC
List: ruby-list #39044
永井@知能.九工大です.

From: Yac <yac@tech-notes.dyndns.org>
Subject: [ruby-list:39040] 内包オブジェクトがnilになったら自分もnilになるには?
Date: Wed, 14 Jan 2004 00:56:26 +0900
Message-ID: <40041528.2050007@tech-notes.dyndns.org>
> あるオブジェクトを内包するオブジェクトがあります。
> 内包しているオブジェクトがnilになったら、自分もnilになってほしいのです
> が、どのように書いたらいいでしょうか。

オブジェクトが化けてしまうことは無理ですが,
そうであるかのように振る舞うことは不可能ではないと思います.

---------------------------------------
class HOGE
  undef_method(:inspect)

  def initialize()
    @raw_obj = {}
  end

  def method_missing(m, *args)
    @raw_obj.send(m, *args)
  end

  def remove
    @raw_obj = nil
  end
end

hoge = HOGE.new
p hoge  #=> {}
hoge['name'] = "名前"
p hoge  #=> p hoge['name']
p hoge['name']  #=> "名前"
hoge.remove
p hoge  #=> nil
p hoge['name']  #=> 例外 (NoMethodError) 発生
---------------------------------------

実際に求められる機能に応じて undef_method や
メソッド定義を行えばよいのではないでしょうか.
-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai@ai.kyutech.ac.jp

In This Thread