如果满足某些条件,我想重新定义库中函数的行为,否则执行原始函数。例如:
class LibraryToExtend
def FunctionToExtend(argument)
if argument == something
do_something_new
else
do_what_the_function_did_originally
end
end
end
我不认为super
会在这个实例中起作用,因为我正在覆盖该函数,而不是扩展它。
答案 0 :(得分:3)
确实super
不会工作。您需要以某种方式保留对旧方法的引用,并通过创建alias来完成此操作。
class LibraryToExtend
alias :FunctionToExtend :original_function
def FunctionToExtend(argument)
if argument == something
do_something_new
else
original_function()
end
end
end
作为旁注,惯例是ruby方法是低位的,而下划线(_)不是camelcase(但这只是我的讨厌)