我试图覆盖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
之间存在差异?
答案 0 :(得分:3)
要获得想要的效果,可以使用Class#inherited
:
class Class
def inherited(subclass)
puts "Created #{subclass}"
end
end
class XX #writes "Created XX"
end