1

から継承するサブクラスを作成すると、インスタンスではなくサブクラスのインスタンスが返されるDatetimeことに気付きました。.nowDatetime

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 で書かれています。それが属するクラスのインスタンスを返すクラスメソッドを書くことは可能ですか?

4

1 に答える 1

4

自分で試してください:

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

class B < A
end

B.a
于 2012-06-05T08:52:15.173 に答える