Ruby:class<<自己呢?

时间:2011-07-25 10:32:12

标签: ruby

class Person
  class << self
    def species
      "Homo Sapien"
    end
  end
end

为什么我需要使用class&lt;&lt;自我?

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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