【发布时间】:2011-10-12 11:41:14
【问题描述】:
class Person
class << self
def species
"Homo Sapien"
end
end
end
为什么我需要使用类
有什么好处? 为什么我需要它?
【问题讨论】:
-
请停止在 Stack Overflow 中重复现有问题。
标签: ruby
class Person
class << self
def species
"Homo Sapien"
end
end
end
为什么我需要使用类
有什么好处? 为什么我需要它?
【问题讨论】:
标签: ruby
在class << self 中声明的任何方法都将定义在类实例上,而不是类的实例上。在上面的例子中,你可以调用Person.species,但不能调用Person.new.species。
【讨论】:
def self.species,因为self指的是类定义中的类实例。
def Person.species,如你所见,ruby 为你提供了很多选择。就个人而言,我更喜欢使用def self.species,因为很明显species 是一个无需滚动的类方法,除非 所有这些方法确实是类方法,并且比我更喜欢class << self。
class << obj 让您可以访问obj 的元类(也称为特征类或单例类),该构造中的所有内容都在该元类的上下文中执行。 self 直接在类定义中引用该类,因此在您的示例中,方法 species 被定义为 Person 上的类方法。
【讨论】: