From: Nonta Date: 2005-08-20T11:33:00+09:00 Subject: [ruby-list:41046] Re: 親クラスのインスタンスを元に子クラスのインスタンスを作りたい 野田です。 まつもと様、るびきち様、ありがとうございます。 委譲というものをそもそも知らなかったので、調べつつ試して みました。 class A def initialize() @x = 1 end @y = nil attr_accessor :x attr_accessor :y def method() 4 end end class B < DelegateClass(A) def initialize(a = A.new) super(a) end end b = B.new #あたかもBはAのサブクラスかのように b.x => 1 a = A.new a.y = 2 b = B.new(a) #aのインスタンス変数の値を引き継いだb b.y => 2 というわけで、まさしくやりたかったことができたわけですが ここで b.method とすると、4が返ってきてくれずにエラーになってしまいました。 クラスBで改めて何かを記述する必要があるのでしょうか…。 > Rubyの場合はattr/attr_reader/attr_writer/attr_accessorを > 使うとokです。 たしかそういうのがあったはずだよなぁと思いつつ、普段使って なかったので、メソッドで書いてしまいました。^^; > VBは使ったことはないのですが、元のソースのように > いちいちgetter/setterをメソッドでゴリゴリ書かないと > いけないのでしょうか? VB.NETでは、変数を宣言するときにpublicをつけるとattr_accessorと 同じ意味合いになります。(と自分は理解しています…) --- nonta@yo.rim.or.jp