当一个类覆盖它时调用Object#send

时间:2015-11-27 10:44:38

标签: ruby override

我的班级MyServer < UNIXServer继承自UNIXServer

我需要在其对象上调用Object#send方法,但我不知道如何调用它,因为UNIXServer会使用this method覆盖它。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

医生说:

  

如果名称发送与现有方法发生冲突,则可以使用__send__   在obj。

答案 1 :(得分:-1)

我想要原始send方法,您可以在Object类中创建别名。

# Opening the `Object` class
# and aliasing the original `send
Object.class_eval do
  alias_method :original_send, :send
end

执行此操作后,您可以在original_send个实例中调用MyServer,其行为与原始send方法相同。

如果这是抽象的,请查看Metaprogramming in Ruby

正如JörgWMittag和@pioz已经说过你也可以使用__send__方法。 Docs