以前看《Ruby元编程》这本书,里面说到环绕别名,大概是这样一组代码。
class String alias :real_length :length def length .... end end
看完这一节,只是说real_length访问之前的String#length方法,现在通过String#length访问的是重写后的方法。
再次之前,我不知道alias关键字,看完这节,我似乎是懂了环绕别名,觉得很神奇。
后来,我阅读ActiveSupport源码,看到里面很多alias_method,百度之,知道它是Module的方法,和alias关键字类似。此时才知我对alias一无所知,忽略了语法的纯粹性和简单性。alias只是一个别名,所以如果不重写length方法,real_length, length是一样的。