3

我正在尝试覆盖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 X那么为什么和之间有区别Class.new呢?

4

1 回答 1

3

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

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

class XX  #writes "Created XX"
end
于 2013-03-13T22:56:20.510 回答