Ruby:类<< self是做什么的?

Ruby: What does class << self do?

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
class Person
  class << self
    def species
     "Homo Sapien"
    end
  end
end

为什么我需要使用类<< self?

有什么好处?
我为什么需要它?


class << obj允许您访问obj的元类(也称为eigenclass或singleton类),该构造中的所有内容都在该元类的上下文中执行。 self直接在类定义中引用该类,因此在您的示例中,方法species被定义为Person上的类方法。


class << self中声明的任何方法都将在类实例上定义,而不是在类的实例上定义。 在上面的示例中,您将能够调用Person.species但不能调用Person.new.species