gpt4 book ai didi

ruby - define_method 是否覆盖与其参数同名的方法?

转载 作者:数据小太阳 更新时间:2023-10-29 07:30:27 26 4
gpt4 key购买 nike

我遇到了以下代码:

  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 改变了原来的方法定义?

最佳答案

如果你多次定义一个方法,所有后面的定义将简单地覆盖旧的。同名方法只能有一个。

关于ruby - define_method 是否覆盖与其参数同名的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com