0

Rubyクラスが定義されたときに教えてくれるようなコードを書くことはできますか?

4

1 に答える 1

2

はい!

class Object  
  def self.inherited(base)
    puts "#{base} inherited from object"
  end
end

class Animal
end

class Cat < Animal
end

上記のコードを実行すると、次のように出力されます。

Animal inherited from object
Cat inherited from object

基本的に、self.inherited定義されているクラスから継承するクラスが定義されるたびに、コールバックがトリガーされます。それを着てObject、それはどんなクラスでもあります!(ただし、今は思いつかない特別なケースの例外がいくつかあるかもしれません)。

これを行うことは可能ですが (Ruby が言語としていかに優れているかという理由で)、これを行うことが賢明であるかどうか、特に本番環境で使用する予定のコードでは、私には確信が持てません。 . まあ、実際、私は確信しています。それは悪い考えです。

于 2013-02-23T14:34:17.593 に答える