2009-08-26 29 views
12

クラスは、以前、私はインスタンスのクラス親Setクラスの継承const_setクラスのクラスdelcaration OR設定クラスの継承後

から継承するためにそれを伝えることができますどのように定義されている場合:

class Parent 
    .. 
end 

class Klass 
    .. 
end 

今をI私はクラスの不一致エラーが発生しますので、それは

私はクラスを再オープンし、それを設定しカント親から継承したい

class Klass < Parent 
    .. 
end 

具体的に私はどのように私はクラスの親から継承するクラースを伝えることができObject.const_set

を通じて
klass = Object.const_set('Klass', Class.new) 

を作成するクラスイムにクラスの継承を設定する方法を見つけるためにしようとしていますか?

答えて

24

既に存在するクラスのスーパークラスを変更する方法はありません。

動的に作成するクラスのスーパークラスを指定するには、単にスーパークラスを引数としてClass.newに渡します。

class Parent 
end 
klass = Class.new(Parent) 
klass.superclass #=> Parent 

const_setでクラスを作成していません。 Class.newで作成しています。作成したクラスをconst_setという定数で保存するだけです。 const_setが呼び出されると、すでにClass.newが発生しており、スーパークラスをもう変更することはできません。

+0

ありがとう、これは私が必要としていたものです。 –