最佳答案
我把备忘录忘在哪了,希望你能给我解释一下。
为什么物体的特征类不同于 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
是声明类方法的一种方法,而不是实例方法。
因此,在对类对象的引用中,返回的 self
应该与 self.class
相同。这是因为为了定义类方法/属性,class << self
会将 self
设置为 Foo.class
。
我是不是有点糊涂了? 或者,这是 Ruby 元编程的诡计?