为什么不调用Class.new?

时间:2013-03-13 22:45:59

标签: ruby

我试图覆盖Class.new,以便我可以看到正在创建的类,例如

class Class
  class << self
  alias new_orig new
  def new(*args)
    obj = new_orig *args
    print "created",obj,"\n"
    obj
  end
  end
end

class X
end

它不会打印任何内容,但如果我使用Class.new创建类,则可以正常工作

puts Class.new

created#<Class:0x8b75888>
#<Class:0x8b75888>

为什么class XClass.new之间存在差异?

1 个答案:

答案 0 :(得分:3)

要获得想要的效果,可以使用Class#inherited

class Class
  def inherited(subclass)
    puts "Created #{subclass}"
  end
end

class XX  #writes "Created XX"
end