我遇到过以下代码:
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 end class Tweet def say_hi puts "Hi" end end logger =MethodLogger.new logger.log_method(Tweet,:say_hi)
这给出了输出
2012-09-11 12:54:09 -400: Called say_hi
那么,define_method:say_hi如何覆盖原始方法:say_hi?或者define_method是否更改了原始方法定义?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。