我在某处错过了备忘录,希望您能向我解释。
为什么对象的本征分类不同于self.class
?
class Foo
def initialize(symbol)
eigenclass = class << self
self
end
eigenclass.class_eval do
attr_accessor symbol
end
end
end
我将本征类等同于的逻辑class.self
很简单:
class << self
是一种声明类方法而不是实例方法的方法。这是的快捷方式def Foo.bar
。
因此,在对类对象的引用内,返回self
应与相同self.class
。这是因为class << self
将设置self
为Foo.class
用于定义类方法/属性。
我只是感到困惑吗?还是,这是Ruby元编程的一个trick俩?