ごとけんです
In message "[ruby-list:23197] self の振る舞いを書き換えたいです"
on 00/06/13, Kenya Ogata <k_ogata / mbd.nifty.com> writes:
>目的としては、クラス変数としてもっている別クラスをあたかも
>継承の親クラスのように見せかけることなのですが、
require "delegate" ではだめなんですか??
>class Parent
> def initialize
> @self = self
> end
> attr_accessor:self
>
> def return_self
> return self
> end
>end
>
>class Child
> def initialize(_parent=Parent)
> @parent = _parent.new
> @parent.self = self
> end
>
> def method_missing(meg_id,*arg)
> @parent.send(meg_id,*arg)
> end
>end
>
>p Child.new.return_self.type #-> Parent(ほしいのは Child)
>
>となってしまいます。
>
>基本的には Parent から継承するときに自然にかけるように
>というのがねらいなので self にこだわりたいのですが...
return_self の定義を return self ではなく return self.self
とすれば望みの動作になります。
これは、self に限ったことではなくて、レシーバが明示されてい
ない場合ローカル変数が優先されるということよります。
class Foo
attr_accessor :bar
def x
p bar # self.bar
end
def y
bar = 0
p bar # bar
end
end
-- gotoken