类测试 def my_print p“打印一些东西” 结尾 结尾 类测试 别名方法 :old_print, :my_print def my_print old_print p“再打印一些” 结尾 结尾
我原来的测试类在顶部。然后我决定添加更多内容,但我决定使用别名。
但这假设 my_print 已经定义。是否有一种简短的方法来检查我正在使用别名的方法是否已经定义?
类测试 def my_print p“打印一些东西” 结尾 结尾 类测试 别名方法 :old_print, :my_print def my_print old_print p“再打印一些” 结尾 结尾
我原来的测试类在顶部。然后我决定添加更多内容,但我决定使用别名。
但这假设 my_print 已经定义。是否有一种简短的方法来检查我正在使用别名的方法是否已经定义?
关于什么
if Test.method_defined? :my_print
alias_method :old_print, :my_print
end
由于“my_print”不是类方法,而是实例方法,您应该:
if Mod.instance_methods.include? "my_print"
alias_method :old_print, :my_print
end
if method(:my_print)
alias_method :old_print, :my_print
end
defined?
方法。您可以使用该defined?
方法查看是否已在当前上下文/范围内定义了方法:
alias_method( :old_print, :my_print ) if defined?( my_print )