class MethodLogger def log_method((klass,method_name) klass.class_eval do alias_method "#{method_name}_original" method_name define_method method_name do puts "#{Time.Now}: Called #{method_name}" send "#{method_name}_original" end end end endclass Tweet def say_hi puts "Hi" endendlogger =MethodLogger.newlogger.log_method(Tweet,:say_hi)
这给出了输出
2012-09-11 12:54:09 -400: Called say_hi
那么,define_method:say_hi如何覆盖原始方法:say_hi?或者define_method是否更改了原始方法定义?
解决方法 如果多次定义方法,则后面的所有定义都将覆盖旧的定义.只能有一个名称相同的方法. 总结以上是内存溢出为你收集整理的ruby – define_method是否覆盖与其参数同名的方法?全部内容,希望文章能够帮你解决ruby – define_method是否覆盖与其参数同名的方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)