¿Por qué el eigenclass no es equivalente a self.class, cuando se ve tan similar?
Me perdí el memo en algún lugar, y espero que me lo expliques.
¿Por qué el eigenclass de un objeto es diferente deself.class
?
class Foo
def initialize(symbol)
eigenclass = class << self
self
end
eigenclass.class_eval do
attr_accessor symbol
end
end
end
Mi tren de lógica que equipara el eigenclass conclass.self
es bastante simple:
class << self
es una forma de declarar métodos de clase, en lugar de métodos de instancia. Es un atajo paradef Foo.bar
.
Así que dentro de la referencia al objeto de clase, regresandoself
debe ser idéntico aself.class
. Esto es porqueclass << self
pondríaself
aFoo.class
para la definición de métodos / atributos de clase.
¿Estoy solo confundido? O, ¿es este un truco astuto de la programación de Ruby?