ruby – define_method是否覆盖与其参数同名的方法?
发布时间:2020-12-17 02:38:39 所属栏目:百科 来源:网络整理
导读:我遇到过以下代码: 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}_ori
我遇到过以下代码:
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是否更改了原始方法定义? 解决方法
如果多次定义方法,则后面的所有定义都将覆盖旧的定义.只能有一个名称相同的方法.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |