ruby - 返回当前类的实例

时间:2012-06-05 08:50:19

标签: ruby inheritance

我注意到如果我创建一个继承自Datetime的子类,它的.now将返回子类实例,而不是Datetime实例。

class MyDateTime < DateTime
end

MyDateTime.now
>#<MyDateTime: 2012-06-05T16:42:57+08:00 ((2456084j,31377s,900801494n),+28800s,2299161j)>

看起来很神奇。我不能在我自己的班级中重现这种行为:

class A
  def self.a
   return A.new
  end
end

class B < A
end

B.a
#<A:0x00000001e22358>

我尝试阅读DateTime的源代码,但它是用C语言编写的。是否可以编写一个类方法来返回它所属的类的实例?

1 个答案:

答案 0 :(得分:4)

自我尝试:

class A
  def self.a
   return self.new
  end
end

class B < A
end

B.a