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 に答える