所以如果有两种方法:
def foo
method1
method2
end
如何检查所有这些'method1 / method2'是否已在方法中执行?怎样才能计算调用该方法的次数。代码也需要在method1或method2中进行检查。
答案 0 :(得分:0)
以另一种方式做到这一点可能很容易,但这种方式似乎很干净且模块化。
创建一个名为method_counter的代理类,它删除它自己的方法,并定义missing_method,get_method_counts和构造函数。您可以在此处查看如何执行此操作的示例:http://www.binarylogic.com/2009/08/07/how-to-create-a-proxy-class-in-ruby/
现在构造函数接受任何其他对象,并在内部存储它。 get方法计数方法返回methodname =>的哈希值。计算对象。
当有人在代理对象上调用一个不存在的方法时,ruby会调用缺少的方法...然后你应该在更新方法后实现它来调用包含对象上的相同方法(在构造函数中传递)数哈希。
这个实现是干净的,因为你没有触及目标对象代码,调用代码只需要改变1行(目标对象的构造函数来代替创建代理)。