5
类测试

  def my_print
    p“打印一些东西”
  结尾
结尾

类测试

  别名方法 :old_print, :my_print
  def my_print
    old_print
    p“再打印一些”
  结尾
结尾

我原来的测试类在顶部。然后我决定添加更多内容,但我决定使用别名。

但这假设 my_print 已经定义。是否有一种简短的方法来检查我正在使用别名的方法是否已经定义?

4

4 回答 4

4

关于什么

if Test.method_defined? :my_print
    alias_method :old_print, :my_print
end
于 2012-05-20T21:18:44.397 回答
2

由于“my_print”不是类方法,而是实例方法,您应该:

if Mod.instance_methods.include? "my_print"
  alias_method :old_print, :my_print
end
于 2012-05-20T21:21:38.950 回答
0

if method(:my_print) alias_method :old_print, :my_print end

于 2016-05-26T00:35:48.707 回答
0

使用defined?方法。

您可以使用该defined?方法查看是否已在当前上下文/范围内定义了方法:

alias_method( :old_print, :my_print ) if defined?( my_print )
于 2018-03-11T17:12:23.797 回答