2011-10-19 53 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行(而不是目標對象的構造函數以創建代理)。

相關問題