2011-10-19 4 views
0

그래서 두 가지 방법이 있다면 :메소드에 몇 개의 메소드가 있는지 계산하십시오.

def foo 
    method1 
    method2 
end 

어떻게이 'method1/method2'가 모두 메소드에서 실행되었는지 확인할 수 있습니까? 메소드가 호출되는 시간은 어떻게 계산 될 수 있습니까? 또한이 코드는 method1 또는 method2 내부에 있어야이를 확인할 수 있습니다.

답변

0

다른 방법으로는 쉽게 할 수 있지만,이 방법은 깨끗하고 모듈 식입니다.

자체 메서드를 제거하고 missing_method, get_method_counts 및 생성자를 정의하는 method_counter라는 프록시 클래스를 만듭니다. 여기에서 그 방법을 보여주는 예를 볼 수 있습니다 : http://www.binarylogic.com/2009/08/07/how-to-create-a-proxy-class-in-ruby/

이제 생성자는 다른 객체를 가져 와서 내부적으로 저장합니다. get 메서드 counts 메서드는 methodname => count 개체의 해시를 반환합니다.

누락 된 메서드는 누군가가 존재하지 않는 프록시 객체에 대한 메소드를 호출 할 때마다 루비에 의해 호출됩니다 ... 그리고 나서이를 업데이트 한 후 포함 된 객체 (생성자에서 전달됨)에서 동일한 메소드를 호출하도록 구현해야합니다. 메소드 카운트 해시.

대상 개체 코드를 건드리지 않았으므로이 구현은 문제가 없으며 호출 코드는 한 줄 (대상 개체의 생성자 대신 프록시를 만들기 위해) 만 변경하면됩니다.

관련 문제