Tag: 语言特征本

为什么特征类不等于self.class,看起来如此相似呢?

我已经错过了备忘录,我希望你能向我解释这个。 为什么对象的特征类与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将class << self设置为Foo.class来定义类方法/属性。 我只是困惑? 或者,这是Ruby元编程的诡计吗?