【发布时间】:2010-12-10 11:46:04
【问题描述】:
我在某处错过了备忘录,希望你能向我解释一下。
为什么对象的特征类与self.class不同?
class Foo
def initialize(symbol)
eigenclass = class << self
self
end
eigenclass.class_eval do
attr_accessor symbol
end
end
end
我将 eigenclass 等同于 class.self 的逻辑序列相当简单:
class << self 是一种声明类方法的方式,而不是实例方法。这是def Foo.bar 的快捷方式。
所以在对类对象的引用中,返回的self 应该与self.class 相同。这是因为class << self 会将self 设置为Foo.class 以定义类方法/属性。
我只是糊涂了吗?或者,这是 Ruby 元编程的诡计?
【问题讨论】:
标签: ruby language-features eigenclass