2009-08-26 13 views
12

Si una clase se ha definido anteriormente, ¿cómo puedo decir que heredar de una clase Padreconjunto de clases herencia después delcaration clase o la herencia de clases configuración en clase const_set

Por ejemplo:

class Parent 
    .. 
end 

class Klass 
    .. 
end 

Ahora quiere que se heredan de los padres

no puedo volver a abrir la clase y la puse porque voy a conseguir un error de coincidencia de clase

class Klass < Parent 
    .. 
end 

Específicamente estoy tratando de averiguar cómo configurar la herencia de clases en una clase im creación a través Object.const_set

klass = Object.const_set('Klass', Class.new) 

¿Cómo puedo saber Klass a Heredar de la clase?

Respuesta

24

No hay forma de cambiar la superclase de una clase ya existente.

Para especificar la superclase de una clase que está creando dinámicamente, simplemente pase la superclase como argumento al Class.new.

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

Así como una nota al margen: Usted no es la creación de la clase con const_set. Lo está creando con Class.new. Simplemente está almacenando la clase creada en una constante con const_set. Una vez que se invoca const_set, Class.new ya ha sucedido y ya no se puede cambiar la superclase.

+0

Gracias, esto era exactamente lo que necesitaba. –

Cuestiones relacionadas