Ruby关键字,alias :newmethod :oldmethod,给一个方法定义一个环绕别名。例如:
class Cc def show1 puts "我是原始show1" end alias :without_show1 :show1 def show1 without_show1 puts "别名环绕" end end
通过without_show1仍可访问原始方法,重新定义show1,通过访问show1,将会访问重新定义的方法。
无非是给:show1指定一个新的别名而已。
注意: 重新定义的方法必须在alias关键字之后,否则因为重新定义的方法内包含对旧方法的访问,将会造成递归调用。
alias_method是Module类私有实例方法,它接收两个参数,可以是符号或字符串,以逗号分隔
alias_method_chain, 按官方文档,它封装类似下列这样的模式:
alias_method :foo_without_feature, :foo alias_method :foo, :foo_with_feature
通过alias_method_chain :foo, :feature,你可以得到3个方法,分别是 foo_whitout_feature, foo_with_feature, foo,后面两个方法是你重写的方法。和alias方法不同的是,你不需要直接重写foo方法,只需重写:foo_with_feature即可,而且foo_with_feature方法,可以在alias_method_chain语句之前。
老实说,感觉这个方法有点没事儿找事,多次一举,实在不明白我为什么要单独定义一个附带with中缀的方法。