Ruby alias_方法递归

Ruby alias_方法递归,ruby,alias,Ruby,Alias,在下面的源代码中,为什么orig_exit不以无限递归的方式调用自己呢 module Mod alias_method :orig_exit, :exit def exit(code=0) puts "Exiting with code #{code}" orig_exit(code) end end include Mod exit(99) 为什么orig_exit不以无限递归结束自己的调用 module Mod alias_method :orig_exit

在下面的源代码中,为什么
orig_exit
不以无限递归的方式调用自己呢

module Mod
  alias_method :orig_exit, :exit
  def exit(code=0)
    puts "Exiting with code #{code}"
    orig_exit(code)
  end
end
include Mod
exit(99)
为什么orig_exit不以无限递归结束自己的调用

module Mod
  alias_method :orig_exit, :exit
  def exit(code=0)
    puts "Exiting with code #{code}"
    orig_exit(code)
  end
end
include Mod
exit(99)
因为这里没有递归

首先,从最后一行(
exit(99)
)调用
exit
,这又调用了
orig\u exit
,这是一个不同的函数。除非
orig_exit
显式调用
exit
(没有理由相信它会这样做),否则递归是不可能的。当
orig_exit
返回时,其返回值也从
exit
返回

alias\u method
已将名为
exit
的方法重命名为
orig\u exit
,然后定义了名为
exit
的全新函数

为什么orig_exit不以无限递归结束自己的调用

module Mod
  alias_method :orig_exit, :exit
  def exit(code=0)
    puts "Exiting with code #{code}"
    orig_exit(code)
  end
end
include Mod
exit(99)
因为这里没有递归

首先,从最后一行(
exit(99)
)调用
exit
,这又调用了
orig\u exit
,这是一个不同的函数。除非
orig_exit
显式调用
exit
(没有理由相信它会这样做),否则递归是不可能的。当
orig_exit
返回时,其返回值也从
exit
返回

alias\u method
已将名为
exit
的方法重命名为
orig\u exit
,然后定义了名为
exit
的全新函数