En Ruby, podríamos usar super
dentro del método singleton para llamar al método singleton de la superclase correspondiente, como se muestra en el siguiente código.¿Cuál es la relación entre la metaclase de clase Base y Derivada en Ruby?
class Base
def self.class_method
puts "Base class method"
end
end
class Derived < Base
def self.class_method
puts "Derived class method"
super
end
end
Derived.class_method
# Derived class method
# Base class method
Sin embargo, no me parece del todo cómo conseguir esa llamada a super
dentro Derived.class_method
podría llegar a Base.class_method
. Supongo que class_method
se define en su metaclase, ¿eso significa que su metaclase tiene una relación padre/hijo? (Yo no puedo confirmar que los experimentos)
actualización: estoy haciendo esta pregunta, ya que recordaba haber visto en alguna parte que hay algún tipo de relación bettwen base y clase derivada metaclase (pero no puedo encontrarlo más). Además de saber cómo realmente funciona el super
, también me gustaría confirmar si las dos metaclases están totalmente separadas o no.
¿Hay una manera de 'ver' la relación entre #Base y #Derived? por ejemplo, como la '.superclass' normal. – bryantsai
Agregué el truco que hace que una clase electrónica salga de su escondite. Pero el diagrama no es consistente con lo que muestra el truco :( –
bueno ... # no es # , ese es mi problema ... ¿Dose el enlace de #Derived a #Base realmente existe? –
bryantsai