2011-10-19 2 views
0

だから、二つの方法がある場合:メソッドに含まれるメソッドの数を数えますか?

def foo 
    method1 
    method2 
end 

はどのようにしてこれらの「法1 /法2」のすべてが、方法自体が実行されたかどうかを確認してくださいだろうか?メソッドが呼び出されている時間がどのようにカウントされるかこれを確認するには、コードもmethod1またはmethod2の内部にある必要があります。

答えて

0

これはおそらく別の方法ですが、この方法はきれいでモジュラーなようです。

method_counterという独自のメソッドを削除し、missing_method、get_method_counts、およびコンストラクタを定義するプロキシクラスを作成します。これを行う方法の例をここで見ることができます:http://www.binarylogic.com/2009/08/07/how-to-create-a-proxy-class-in-ruby/

コンストラクタは他のオブジェクトを取り込み、内部的に格納します。 getメソッドcountsメソッドは、methodname => countオブジェクトのハッシュを返します。

存在しないプロキシオブジェクトのメソッドを誰かが呼び出すと、rubyメソッドが呼び出されます...そして、それを実装して、そのオブジェクトを(コンストラクタで渡された)同じメソッドを呼び出すように実装する必要があります。メソッドカウントハッシュ

ターゲットオブジェクトのコードには触れていないため、呼び出しコードは1行(プロキシを作成するターゲットオブジェクトのコンストラクタ)を変更するだけで済みます。

関連する問題