我好像错过了某些信息,请你为我解释一下。
为什么对象的特殊类(eigenclass)和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元编程中的一个诡计?