class Test def my_print p "Print something" end end class Test alias_method :old_print, :my_print def my_print old_print p "Print some more" end end
我原来的Test类位于顶部。然后我决定添加更多内容,但我决定使用别名。
但是假设my_print已经定义了。是否有一种简短的方法来检查我是否已经定义了一个别名的方法?
答案 0 :(得分:4)
怎么样
if Test.method_defined? :my_print
alias_method :old_print, :my_print
end
答案 1 :(得分:2)
因为“my_print”不是类方法,而是实例方法,你应该:
if Mod.instance_methods.include? "my_print"
alias_method :old_print, :my_print
end
答案 2 :(得分:0)
if method(:my_print)
alias_method :old_print, :my_print
end
答案 3 :(得分:0)
defined?
方法。您可以使用defined?
方法查看是否已在当前上下文/范围内定义了方法:
alias_method( :old_print, :my_print ) if defined?( my_print )