我知道def是一个关键字,无法覆盖。
但是有一种方法可以在方法向类注册时调用方法(传入正在创建的方法的名称吗?)
答案 0 :(得分:7)
这就是Module#method_added
钩子方法的用途:
module Foo
def self.method_added(meth)
p meth
end
def bar; end
end
# :bar
答案 1 :(得分:3)
使用该钩子创建mixin:
module Foo
def method_added(method_name)
puts "method #{method_name} added"
end
end
class Bar
extend Foo
def some_method
end
end
请注意,method_added是类方法(严格来说是Class类实例实例方法sic!),因为它是在Module类中定义的。所以我们必须用extend添加它,以便它转到Bar元类。
答案 2 :(得分:0)
如果我理解你的问题,
class_instance.send(METHOD_NAME)
应该这样做